Python - ファイルの書き込み

ファイルの書き込み

ファイルに書き込むためには open() 関数を使用し、open() 関数の引数に mode='w' を指定します。ファイルが存在しない場合は新規作成し、存在している場合は既存の内容は削除されて上書き保存されます。ファイルの書き込みには write() 関数を使用すると文字列を書き込むことができます。ファイルを閉じる場合は、close() 関数を使用します。

f = open('sample.txt', mode='w')

f.write('Hello, World!')

f.close()
ファイルの書き込み: open()

write() 関数の引数には文字列のみ指定できます。それ以外の型を指定すると TypeError 例外が発生します。また、指定したディレクトリが存在しない場合は FileNotFoundError 例外が発生します。

ファイルの書き込み時にエンコーディングを指定する場合は、open() 関数の引数に encoding を指定します。encoding が指定されていない場合に使われるエンコーディングは、プラットフォームに依存します。Python で使用可能なエンコーディングの種類は、標準エンコーディングを参照してください。

f = open('sample.txt', mode='w', encoding='utf-8')
ファイルの書き込み: open()

リストを書き込み: writelines()

writelines() 関数を使用するとリストをファイルに書き込むことができます。writelines() 関数の引数に指定できるのは文字列を要素とするリストのみです。

list = ['A', 'B', 'C']

f = open('sample.txt', mode='w')

f.writelines(list)

f.close()
リストを書き込み: writelines()

writelines() 関数では改行コードは挿入されず、要素がそのまま連結されて書き込まれます。リストの要素ごとに改行して書き込みたい場合は、join() 関数で改行コードを含めた文字列を作成し、write() 関数を使用します。

list = ['A', 'B', 'C']

f = open('sample.txt', mode='w')

f.write('\n'.join(list))

f.close()
リストを書き込み: write()

ファイルが存在しない場合のみ書き込み

mode='w' では、誤って既存のファイルを指定しまった場合、内容が上書きされてしまいます。ファイルが存在しない場合のみ新規作成を行い、ファイルが存在した場合は上書きを禁止するには、mode='x' を指定します。

mode='x' を指定した場合、ファイルが存在すると FileExistsError 例外が発生します。

f = open('sample.txt', mode='x')

f.write('Hello, World!')

f.close()
ファイルが存在しない場合のみ書き込み

ファイルに追記で書き込み

ファイルの末尾に追記で書き込むためには mode='a' を指定します。ファイルが存在しない場合は mode='w' と同じくファイルが新規作成されます。

f = open('sample.txt', mode='a')

f.write('Hello, World!')

f.close()
ファイルの追記書き込み

ファイルの先頭に書き込み

ファイルの先頭に書き込むためには mode='r+' を指定します。ただし、このモードは挿入ではなく上書きで書き込まれます。

f = open('sample.txt', mode='r+')

f.write('Hello, World!')

f.close()
ファイルの先頭に書き込み

バイナリファイルの書き込み

ファイルをバイナリモードで書き込むためにはモードの末尾に b を指定します。例えば、バイナリファイルに書き込む場合は mode='wb' を指定します。

bin = 'あいうえお'.encode('utf-8')

f = open('sample.bin', mode='wb')

f.write(bin)

f.close()
バイナリファイルの読み込み

関連記事