Python - ファイルの読み込み

ファイルの読み込み

ファイルを読み込むためには open() 関数を使用します。ファイルを閉じる場合は、close() 関数を使用します。

f = open('sample.txt')

print(f)
# ファイルの内容が出力される

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

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

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

ファイルを読み取り専用で開くには、open() 関数の引数に mode='r' を指定します。デフォルト値が mode='r' であるため、省略可能です。

f = open('sample.txt', mode='r')
ファイルの読み込み: open()

ファイル全体を文字列として読み込み: read()

read() 関数を使用すると、読み込んだファイル全体を文字列として取得できます。

f = open('sample.txt')

print(f.read())
# line 1
# line 2
# line 3

f.close()
ファイル全体を文字列として読み込み: read()

ファイル全体をリストとして読み込み: readlines()

readlines() 関数を使用すると、読み込んだファイル全体を行ごとに分割したリストとして取得できます。リストの要素は末尾に改行コード \n を含みます。

f = open('sample.txt')

print(f.readlines())
# ['line 1\n', 'line 2\n', 'line 3']

f.close()
ファイル全体をリストとして読み込み: readlines()

改行コード \n を除去したい場合は、strip() 関数などを使用します。

f = open('sample.txt')

list = [s.strip() for s in f.readlines()]
print(list)
# ['line 1', 'line 2', 'line 3']

f.close()
ファイル全体をリストとして読み込み: readlines()

ファイルを一行ずつ読み込み

ファイルオブジェクトと for 文を組み合わせることで、ファイルの先頭から一行ずつ文字列として取得できます。いずれの場合も行末の改行コードを含む文字列が取得できます。

f = open('sample.txt')

for line in f:
    print(line)
# line 1
#
# line 2
#
# line 3
#
f.close()
ファイルを一行ずつ読み込み

バイナリファイルの読み込み

ファイルをバイナリモードで読み込むためにはモードの末尾に b を指定します。例えば、バイナリファイルを読み込む場合は mode='rb' を指定します。バイナリファイルを読み込む場合、エンコーディングの指定はできません。

f = open('sample.bin', 'rb')

print(f.read())
# b'\x01\x02\x03\x04\x05\x06\ ...

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

バイナリファイルを Print 文で出力するとバイト列が文字列として出力されます。バイト列をそのまま出力する場合は、sys.stdout.buffer で出力します。

import sys

f = open('sample.bin', 'rb')

sys.stdout.buffer.write((f.read())

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

関連記事