- ベストアンサー
Pythonのopen()が使えません
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
具体的に、どのように「できない」のですか? エラーメッセージは出ませんか? 変数(?)finished が 見あたりません。 finished=False だったら、ループの最後でf.close() した後、そのままの fを使って、whileループの先頭に戻って for line in f: でアクセスするので、正常な動作は期待できません。 finished=Trueだったら、読み書き自体が実行されません。 そもそも、このwhileは必要なのでしょうか? なお、Python3ならopenはwith構文と組合せると便利です。
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
ちょっと落ち着いてください > f=open('acountfile.txt', 'r', encoding='utf-8') モードr では、書き込みはできません。 これが、wやaの間違いだとすると ・カレントディレクトリはどこ? 絶対パスではないので、カレントディレクトリのファイルに書き込まれるはずです。 確認しているファイルと、別なディレクトリにできていませんか? 絶対パスで指定したら動いたりしませんか? ・ファイルやディレクトリの書き込み権限は? ・ちゃんと、書き込み部分を実行してますか? デバッガや「printデバグ」等で確認する あたりも確認してください。
お礼
丁寧な返答有難うございます。 コードを確認していたところ、実行文がない事に気づいて 書き加えたところ動作しました。 間抜けな質問で申し訳ありませんでした。 ちなみにrモードは書き込む前の重複確認のためのもので、 下の方の「f.write命令」直前の「open」で-aオプションで 呼び出しているのが書き込みのための処理になります。 これは確認のためのWindows上でのコードで、本来はUbuntu 上で走らせる予定なので、ディレクトリの指定は、ご指導の ように気をつけさせていただきます。 また疑問点などありましたら質問させていただきたく、 その際にもよろしければご助力願います。 有難うございました。
補足
ごめんなさい。書きかけのID確認コードから流用して、よく確認もしないで質問してしまいました。finishedもwhileもいらないようです。 元々、関数rememberidの部分は f=open('acountfile.txt', 'r', encoding='utf-8') f.write(yourid+',') f.write(yourpassword+'\n') と書いたのですが、これも動作しませんでした。 関数inputidのプロンプトの部分は入力を求められます。 エラーメッセージはここに書いたコードの際も、質問にあげたコードでもでていません。 回答を参考に書き直したコードでもエラーメッセージはありませんでした。 ただ、ファイルに出力された様子もないのです。 どうしたらいいのかわかりません。