Developer

【Python連載】テキストファイルに書き込む
2021.08.31
Lv1

【Python連載】テキストファイルに書き込む

Pythonは、オブジェクト指向と呼ばれるプログラミング言語の一つです。
今回は、テキストファイルへの書き込みを行ってみましょう。


テキストファイルへ書き込む

テキストファイルへ書き込む動作の流れは、読み込みの際と似た形になっています。

(1)ファイルを開く(open関数)
(2)行いたい処理
(3)ファイルを閉じる(close関数)

読み込みの際の流れと同じく、最後はファイルを閉じることが必要となります。
これは、他のプログラムが後から同じファイルへアクセスしようとした時に、ファイルが閉じられていないために正常にアクセス出来なくなってしまうケースが存在するからです。

ファイルを開いたら最後は閉じる、ということを忘れないように気を付けましょう。

それでは、実際にファイルへの書き込みを行ってみましょう。
以下で使用しているopen関数、close関数は、以前の記事で扱ったものと同じものです。

file = open("sample.txt","w") #ファイルを上書きモード(w)で開くという意味
file.write("1行目です\n2行目です") #\nは改行を意味
file.close() #ファイルは閉じる

データの書き込みは、2行目のwrite()によって行われます。
今回は『1行目です』という文字の後に改行『\n(バックスラッシュn)』を行って『2行目です』という文字を続けて書き込む形にしています。

こちらのプログラムを実行すると、.pyファイルと同じディレクトリにsample.txtというファイルが生成されていると思います。

生成されたsample.txtを開いてみると、次のような中身になっていると思います。

なお、もしも同名のファイルが既に存在している場合には、そのファイルを上書きする形で書き込みがされてしまうため、注意が必要です。

上記は上書きモード(w)で行いましたが、追記モードというものを存在します。
追記モードでは、その名の通り、同名のファイルが存在する場合には後ろに追記されていく形で書き込みが行われます。

file = open("sample.txt","a") #ファイルを追記モード(a)で開くという意味
file.write("\n追記モードで追記しています")
file.close() #ファイルは閉じる

先ほど生成したsample.txtに、追記する形で書き込みを行っています。
更新されたsample.txtを開くと、次のような中身になっていると思います。

以上が、ファイル書き込みの基本的な流れになります。

with~as構文を使用した書き込み

close関数の失念によるファイルの閉じ忘れが無いように、ファイル書き込み時においてもwith~as構文を使用することが出来ます。
※ファイル読み込み時のwith~as構文に関する記事はこちら

記述方法は、ファイル読み込み時のwith~as構文とほとんど同じです。

with open("sample.txt","w") as file: #上書きモード(w)で開く
file.write("with-as構文での書き込み") #インデントが無いとエラーになる

処理ブロックについてはインデントが必要となるため、注意しましょう。
close関数を書かなくても確実にファイルが閉じられるため、安心して使用することが出来ますね。


まとめ

Pythonでは、ファイルの読み込み以外にも書き込みも可能です
書き込みには、上書きモード(w)と追記モード(a)が存在します
with~as構文を使用することが出来ます


確認問題

sample.txtというテキストファイルが存在しない状況で、次のようなプログラムを実行しました。

file = open("sample.txt","w")
file.write("111")
file.close()

with open("sample.txt","a") as file:
file.write("\n222")

どのような結果が得られるでしょう。
正しい選択肢を次のうちから一つ選びなさい。
(1)sample.txtには『111』というテキストが書き込まれている。
(2)sample.txtには『222』というテキストが書き込まれている。
(3)sample.txtには『111(改行)222』というテキストが書き込まれている。
(4)sample.txtというファイルは生成されない

答えは次回の記事の最後に!