Pythonでファイルに書き込み・上書き・読み込みする5つの方法【open関数のモード選択】

Pythonのファイル操作を使うと数百あるファイルをボタン一つで変更できるとう非常に便利なものですね。

今回はファイルに書き込むときや上書きするとき、またファイルから読み込むときの方法を解説していきます。

この記事の内容はファイルを開くときに使うopne関数やwith文を知っているとして進めます。

読み書きモード

ファイルを開くと気に使うopen関数にはどのモードでファイルを開くのかを決めるオプションがあります。

2つ目の引数に指定する値によって読み込み専用や書き込み専用がわかれます。

オプション意味
r読み込みモード
ファイルの文字列をすべて取り出す
w書き込みモード(上書き保存)
ファイルがないなら新規作成
a書き込みモード(追記)
既存のデータに追加する(上書きとは異なる)
x書き込みモード(新規ファイルへの書き込み)
存在するファイルを指定するとエラー
読み書きモード(両方できる)
w+:上書きと読み込み
a+:追記と読み込み
bバイナリーモード
テキストファイル以外で使用

ここからは、これらのオプションをより詳しく見ていきましょう。そのためにサンプル.txtというファイルを操作していきたいと思います。このファイルの中身は以下のようになっています。

このテキストファイルを保存するときは「utf-8」にしておかないと「UnicodeDecodeErro」がでます。

opne関数で開いたファイルはファイルオブジェクトが作られます。そのオブジェクトに使えるのが、以下で紹介するwriteメソッドやreadメソッドです。

読み込み:r

  • readメソッド:ファイルに書かれている文字を取得
  • オプションで「r」を選択しているのでreadメソッドを使える

もしオプションに「w」を選択するとreadメソッドは使えません。逆に「r」を選択しているときにwriteメソッドは使えません。

書き込み(上書き):w

  • writeメソッド:ファイルに追記する
  • ファイルを上書き保存する

これは上書きなので元あったデータはなくなります。「サンプル.txt」を確認すると以下のようになっています。

  • ファイルが存在しない場合は新規作成する

「サンプル2.txt」というファイルは存在しないので新規で作成されて以下のように「さようなら2」と書き込まれています。

書き込み(追記):a

  • writeメソッド:ファイルに追記する
  • ファイルの末尾にデータが追加される

この処理を実行してから「サンプル.txt」を確認すると、以下のようにファイルの末尾に「さようなら」が追加されています。

このモードの場合もファイルがない場合は新規作成されます

新規作成:x

  • writeメソッド:新規ファイルに書き込み
  • 既存のファイルを指定するとエラー「FileExistsError」

読み書きモード:+

  • w+:上書きと読み込み
  • a+:末尾に追記と書き込み
  • r+:先頭から上書きと読み込み

「r+」でreadメソッドを使った出力結果とファイルに書き込まれている結果が異なるので注意してください。

3つのモードでサンプル.txtの結果が異なります。それぞでどの部分が変更されているのか確認しておく必要があります。

また、どのモードでもwriteメソッドは使えますが、readメソッドの挙動は異なります。表示されないだけでエラーにはなりません。

モードwriteメソッドreadメソッド
w+上書き表示されない
エラーではない
a+追記表示されない
エラーではない
r+先頭から上書き表示される

まとめ

  • 書き込みモード:w(上書き)、a(追記)
    • writeメソッドを使える
  • 読み込みモード:r
    • readメソッドを使える
  • 新規作成モード:x
  • 読み書きモード:+

当ブログではPython初心者が独学で習得するためのカリキュラムを公開中!

初心者がPythonを独学で習得できたロードマップはコチラ

Pythonでファイルに書き込み・上書き・読み込みする5つの方法【open関数のモード選択】
最新情報をチェックしよう!