こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Pythonのopen()が使えません

 Pythonでアカウント作成部分のプログラムを書こうと思い、
画像のようなコードを書いたのですが、ファイルに書き込むこと
が出来ません。使用してるPythonのバージョンは3.4.1です。


 それと、こういう場合に、ただ登録情報の変数を参照する
だけのためにクロージャを使うのは正しいのでしょうか?

 ご指導のほど、よろしくお願いいたします。

投稿日時 - 2014-06-24 01:39:02

QNo.8651035

困ってます

質問者が選んだベストアンサー

具体的に、どのように「できない」のですか?
エラーメッセージは出ませんか?



変数(?)finished が 見あたりません。
finished=False だったら、ループの最後でf.close() した後、そのままの fを使って、whileループの先頭に戻って for line in f: でアクセスするので、正常な動作は期待できません。
finished=Trueだったら、読み書き自体が実行されません。
そもそも、このwhileは必要なのでしょうか?


なお、Python3ならopenはwith構文と組合せると便利です。

投稿日時 - 2014-06-24 07:27:31

補足

ごめんなさい。書きかけのID確認コードから流用して、よく確認もしないで質問してしまいました。finishedもwhileもいらないようです。

元々、関数rememberidの部分は

f=open('acountfile.txt', 'r', encoding='utf-8')
f.write(yourid+',')
f.write(yourpassword+'\n')

と書いたのですが、これも動作しませんでした。

関数inputidのプロンプトの部分は入力を求められます。

エラーメッセージはここに書いたコードの際も、質問にあげたコードでもでていません。
回答を参考に書き直したコードでもエラーメッセージはありませんでした。

ただ、ファイルに出力された様子もないのです。
どうしたらいいのかわかりません。

投稿日時 - 2014-06-24 17:04:02

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

ちょっと落ち着いてください

> f=open('acountfile.txt', 'r', encoding='utf-8')

モードr では、書き込みはできません。

これが、wやaの間違いだとすると
・カレントディレクトリはどこ?
 絶対パスではないので、カレントディレクトリのファイルに書き込まれるはずです。
 確認しているファイルと、別なディレクトリにできていませんか?
 絶対パスで指定したら動いたりしませんか?
・ファイルやディレクトリの書き込み権限は?
・ちゃんと、書き込み部分を実行してますか?
 デバッガや「printデバグ」等で確認する

あたりも確認してください。

投稿日時 - 2014-06-24 20:32:26

お礼

 丁寧な返答有難うございます。

 コードを確認していたところ、実行文がない事に気づいて
書き加えたところ動作しました。

 間抜けな質問で申し訳ありませんでした。

 ちなみにrモードは書き込む前の重複確認のためのもので、
下の方の「f.write命令」直前の「open」で-aオプションで
呼び出しているのが書き込みのための処理になります。

 これは確認のためのWindows上でのコードで、本来はUbuntu
上で走らせる予定なので、ディレクトリの指定は、ご指導の
ように気をつけさせていただきます。

 また疑問点などありましたら質問させていただきたく、
その際にもよろしければご助力願います。


 有難うございました。

投稿日時 - 2014-06-24 22:57:57

あなたにオススメの質問