PyQオフィシャルブログ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

Pythonでのファイル書き込み時の 'w' と 'a' の違いは?

こんにちは。PyQ開発チームの清原 id:hirokiky です。

PyQメールサポートの中でいただいたご質問とサポートの回答を紹介します。 (質問いただいたご本人様には掲載の許可をいただいております)

Pythonに限らずファイルの読み込み、書き込みやファイルパス、 openclose はヤヤコシイものですね。 今回は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のメール、メンターサポートをご利用ください。

pyq.jp