📁

【Python】ファイルの作成・追記・読込

2022/02/14に公開

本書について

本書では、Pytonのopen関数を用いて、テキストファイルの操作(作成・追記・読込)を実施する方法を紹介します。

ファイルの作成・追記

# 作成
f = open('write_test.txt', 'w')
f.write('1行目\n')
f.close()

# 追記
f = open('write_test.txt', 'a')
f.write('2行目\n')
f.close()

基本的なモードは以下の通り。

モード 説明
r 読み込みモードで開きます。
r+ 読み書きモードで開きます。(書き込みは追記)
w 書き込みモードで開きます。(既に指定するファイルが存在する場合は、上書きします。)
w+ 読み書きモードで開きます。(書き込みは上書き)
a 書き込みモードで開きます。(既に指定するファイルが存在する場合は、追記します。)
a+ 読み書きモードで開きます。(書き込みは追記)※うまく読み込みができない
x 新規ファイルとして書き込みモードで開きます。(既に指定するファイルが存在する場合はエラーとなります。)
b バイナリモードで開きます。

Withステートメントを使った記述方法
withステートメントを使うと、close()の記載が不要になります。
コードの削減・可読性の向上・ファイルの閉じ忘れ防止など、メリットが多いので利用することをお勧めします。

with open('test.txt', 'w') as f:
    f.write('write with statements')

ファイルの読み込み

# 書込
with open('read.txt', 'w') as f:
    f.write('read line 1\n')
    f.write('read line 2\n')
    f.write('read line 3\n')

# 読込(全行)
with open('read.txt', 'r') as f:
    print(f.read())
    
# 読込(1行)
with open('read.txt', 'r') as f:
    while True:
        line = f.readline()
        print(line, end='')
        if not line:
            break

ファイルの作成・読込(同時)

以下の方法で、ファイルの書き込みと読み込みを同じwithステートメント内で実現することができます。
*seekはカーソルを移動するメソッドです。(writeで書き込むと、カーソルが最終行に位置するため、seekにて適正します。)

s = """\
line1
line2
line3
"""
# 書込・読込
with open('test.txt', 'w+') as f:
    f.write(s)
    f.seek(0)
    print(f.read())

Discussion