解決済み

Pythonのopen()が使えません

  • 困ってます
  • 質問No.8651035
  • 閲覧数112
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 80% (12/15)

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


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

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

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

  • 回答No.1

ベストアンサー率 55% (1857/3366)

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



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


なお、Python3ならopenはwith構文と組合せると便利です。
補足コメント
walk-craftsman

お礼率 80% (12/15)

ごめんなさい。書きかけの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

その他の回答 (全1件)

  • 回答No.2

ベストアンサー率 55% (1857/3366)

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

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

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

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

あたりも確認してください。
お礼コメント
walk-craftsman

お礼率 80% (12/15)

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

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

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

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

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

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


 有難うございました。
投稿日時 - 2014-06-24 22:57:57
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


OKWAVE若者応援スペシャル企画

ピックアップ

ページ先頭へ