【初心者向け】Pythonを使ってテキストファイルに文字を保存しよう!(ファイルの書き出し)

はじめに(何に使えるのか)

ここでは、pythonを使ってテキストファイルに保存する方法を学びます。
なぜテキストファイルに保存にするのでしょうか。
例えば、チャットボード(掲示板)のようなものをpythonで作る場合、誰か何時に投稿したのかなどのデータを保存しておく必要があります。
そこで、テキストファイルに保存(書き込み)ができると、利用者のやりとりを残すことができます。
このように何かしらのデータを容易に保存することができるようになるのが一番の利点です。
実際にはデータベースなどを使ってデータを保存することができますが、データベースを利用するよりもファイル処理を使うことの方がデータを容易に保存すること出来ます。
この章では、ファイル処理を利用し、テキストファイルに文字列などをファイルに保存するプログラムを学んでいきます。

テキストファイルの読み書き

ここではテキストファイルにおけるファイル処理に関して見ていきます。
ファイル処理の流れは以下になります。

  1. fileをオープンしてfileオブジェクトを取得
  2. fileオブジェクトに対して処理を行う
  3. fileをクローズする

ファイル読み書きの決まりごと

先ほど、ファイル処理の流れとして3つの説明をしました。
この3つの決められた手順を沿ってプログラムを書く必要があります。

1) ファイルを開く => open()
1)のopen()には2つ引数を渡せます。
第一引数には、ファイル名、第二引数にはモードを渡します。
open(ファイルパス, オープンするモード)
ファイルパス: 相対パス及び絶対パス
オープンするモード(デフォルトは”r”)
r: 読み込みモード
w: 新規書き込みモード
a: 追加書き込みモード
ファイルオブジェクトをクローズする

2) ファイルを読み書きする => read() または write()
2)では、read()『読み込み』またはwrite()『書き込み』関数を使って、ファイルの処理を読み込むのか書き込むのかを決めます。

3) ファイルを閉じる => close()
3)のようにファイルを開いたら必ず最後にファイルを閉じましょう。
close()
ファイルを最後にクローズしないといけない理由に関して説明します。
多くのファイルを開いたときにわかりますが、
同時に開けるファイルの数には上限があるのでclose()で閉じるという処理を行う必要があります。
ですので、決まりごとや守らないといけないことだと思い、ファイル処理の最後には、close()を使いましょう。

読み込み処理
readline(): 一行読み込み

f = open("file.txt", "r")
f.readline()

readlines(): 全ての行をlistとして読み込み
書き込み処理
write(文字列): 文字列を書き込み
ちなみに、プログラムの中で出てくる、「\n」は改行を意味します。
入力の際には、Macの方は、optionキー + ¥キーを押すと\を入力できます。
Windowsの方は、¥nが改行になります。

f = open("file.txt", "w")
f.write("hello, ")
f.write("World")
f.write("\n")
f.close()

ファイルを読み込んで見よう

まずは、何らかのsample.txtを作成(準備)します。
sample.txtの中身は何でも良いです。
空のファイルでも良いですし、何らか書き込んでも良いです。
次に、何らかの.txtファイルを作成したら、read.pyなどのファイル名でpythonファイルを作成します。
下記プログラムを書いて保存してください。

Mac OSの場合

f = open("sample.txt", "r")
print(f.read())
f.close()

windowsは以下のように記述して見てください。
windowsでは、UnicodeErrorが起きてしまう可能性があります。

Windows OSの場合

with open('sample.txt', 'r', encoding='utf-8') as f:
    s = f.read()
    print(s)

上書きと追記

上書きは、ファイルの内容を消してから書き込み、追記はファイルの末尾に追加で書き込みます。

open関数のオプションはそれぞれ次の通りです。

w: 新規書き込みモード(上書き)
a: 追加書き込みモード

例外処理と合わせて使う

処理の途中で何かしらのエラーが発生した時があると思います。
例えば、ファイルの読み書きの際に、ファイルを誰かが削除してしまうなどです。
その際にtry finally構文を使い、finallyの後の処理を実行できるようにします。
開いたファイルを確実に閉じるために、ファイルを読み込むプログラムを作る時には、例外処理を記述する必要があります。

sample_file = open("sample.txt", mode="a")
try:
    sample_file.write("sample01\n")
    sample_file.write("sample02\n")
finally:
    sample_file.close()

with構文

例外処理を記述すると、コードが少し長くなります。
そのためwith構文を使うと、try finallyを使うことなく、自動的にclose()を呼び出してくれます。

以下構文になります。

# ※このコードは構文の説明用のプログラムですので動作しません。
with open("ファイル名") as 変数名:
    # 読み書き処理をここに記述
    print("読み書き処理終了")

例外処理で記述したコードをwith構文を使い書き直してみます。

with open("sample.txt", mode="a") as f:
    f.write("sample01\n")
    f.write("sample02\n")

まとめ

Pythonを使ってファイル処理を記述するための基礎知識を見てきました。
ファイルを処理を使うと、手軽にテキストファイルなどに何かしらのデータを容易に保存することが可能です。
txtファイル形式以外にも、csvファイルなどでも保存が可能なため、保存したデータを今後活用する際には便利です。