こんにちは。PyQ開発チームの清原 id:hirokiky です。
PyQメールサポートの中でいただいたご質問とサポートの回答を紹介します。 (質問いただいたご本人様には掲載の許可をいただいております)
Pythonに限らずファイルの読み込み、書き込みやファイルパス、 open
や close
はヤヤコシイものですね。
今回はPythonのファイル書き込みでの 'w'
と 'a'
の違いを解説します。
質問
with open(”output/work.log’” , "a" , encoding= "utf-8” ) as f: f.write(str_now + "- 出勤\n” ) print('書き込み完了’)
どうして "w"
じゃなく "a"
になってるんですか?
エラーになる訳ではなく、ただファイルに入力がされないだけなんですけど、違いが気になりました。
回答
「open の "a" か "w" の違い」についてですが、
open(..., "w")
にした場合: ファイルへの書き込み- 同じファイル名のファイルがあった場合は、新規作成したファイルで上書きされる
open(..., "a")
にした場合- ファイルへの追記。同じファイル名のファイルがあった場合は、既存のファイルに追記していく
という違いがあります。
どちらも基本は同じ「ファイル作成」ですが、すでに同じ名前のファイルがある場合の動きが違います。
ファイル書き込みについての詳細や、クエスト中に問題や疑問があった場合はまたご質問ください。
クエストでも学習できます
PyQのクエスト「9-2: ファイルへ出力」と「9-3: 日時のファイルへの出力」のクエストで、ファイルの出力方法の違いを解説しています。
お困りのことがあればぜひPyQと、PyQの学習サポートをご利用ください。