今回はPythonでのファイル操作についてまとめました。
具体的には、書き込み操作(上書き・追記)についてサンプルソースを使いながら説明していきたいと思います。
対象レベル
Pythonの環境設定が整っており、Pythonの基本構文が理解出来ること。
詳しくは「【Python入門】〜初級編〜環境構築・基本構文まとめ」にまとめてあります。興味のある方はご覧ください。
サンプルソースを読むうえで理解しておきたいこと
基本的にこの章の内容は読み飛ばしてOKです。サンプルソースでわからないところがあれば参照してみてください。
ファイル書き込み操作
まずファイルの書き込み操作はでは以下の処理を実装します。
- ファイルのopen
- ファイル書き込み
- ファイルのclose
ファイルのopen
まず、ファイルのopenですが、以下のように引数にファイル名とモードを指定します。モードは”w”が書き込み、”a”が追記になります。
f = open("ファイル名", "モード")
ファイルの書き込み
openしたオブジェクトに対して(ここでは「f」)、「write」関数を使って文字を書き込みます。改行が必要であれば、文字の末尾に改行文字を付与します。
f.write("書き込む文字")
ファイルのclose
そして、書き込み操作がすべて終了したら「close」します。
f.close()
ファイルの書き込み(上書き)
ファイルが存在しない場合
以下のサンプルソースでは配列を初期化して「 sample_data.txt 」に配列の中身を改行して書き込んでいきます。
ちなみに配列の中身は以下のような「0」から「9」まで1づつ増えていく値が設定されています。
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
それでは、プログラムを実行してみましょう。まず初めに「 sample_data.txt」が作られていないことを確認します。

プログラムを実行します。

実行後にフォルダを確認すると「 sample_data.txt 」が作成されています。

ファイルの中身を確認すると正しく配列の中身が書き込まれていることが分かります。

ファイルが存在する場合
次はファイルが存在する場合はどうなるか試してみましょう。先ほどのファイルを少し訂正して再度「 sample_file_write_mode_w.py 」を実行してみます。
以下のように「 sample_data.txt 」の5~9の行を削除します。

そして、「 sample_file_write_mode_w.py 」を実行します。

ファイルの中身を確認すると新しく上書きされていることが分かります。

ファイルの書き込み(追記)
ファイルが存在しない場合
今回は書き込みモードを「a」にして実行します。条件は先ほどと同じでファイルが未作成の場合からはじめます。
スポンサーリンク
以下のサンプルソースは先ほどのサンプルソースとほとんど同じで書き込みモードだけ「a」に書き換えています。
一度、「sample_data.txt 」 を削除し、対象ファイルが存在しない状態にします。

「 sample_file_write_mode_a.py 」を実行します。

フォルダを確認すると 「sample_data.txt 」 が新規で作成されています。

ファイルの中身を確認すると10~45までの5づつ増加した値が書き込まれています。

ファイルが存在する場合
それでは、再度同じプログラムを実行してどのような動きをするか確認してみましょう。以下のキャプチャでは 「sample_file_write_mode_a.py 」を再実行し、ファイルの中身を確認しています。
中身を見ると新たに10~45の行が追加されていることが分かります。

まとめ
ファイルが存在しない場合「w」も「a」も同じように新しくファイルを作成する。
ファイルが存在する場合、書き込みモード「w」では、対象のファイルの先頭行から新たに上書き保存する
ファイルが存在する場合、書き込みモード「a」では、対象ファイルの末尾から行を書き込み保存する
おわりに
今回は、Pythonのファイル書き込み操作の基本的なところについて説明しました。そのほかに、今より可読性が上がる「with open 構文」についてもまとめてありますので興味があったら読んでみてください。