Pythonでテキストファイルを読み込む

テキストファイルをPythonで読み込んでみます。

目次

  1. 読み込むテキストファイル
  2. openメソッドでファイルを開く
  3. readメソッド
  4. readlineメソッド
  5. readlinesメソッド
  6. listメソッドで読み込む
  7. forループで読み込む

読み込むテキストファイル

読み込むテキストはこれです。エンコードはUTF-8Nで、改行コードはLFです。

いろはにほへと ちりぬるを
わかよたれそ つねならむ
うゐのおくやま けふこえて
あさきゆめみし ゑひもせす

openメソッドでファイルを開く

ファイルを開くのにはopenメソッドを使います。openしたらcloseが必要ですが、withを使うことで閉じ忘れを防止します。

with open(filename, mode, buffering, encording, errors, newline, closefd, opener) as f:
    #読み取り処理
変数 内容
filename ファイル名
mode ファイルを開くモード。rは読み込み。tはテキスト。bはバイナリ。
buffering バッファの仕方
encoding テキストモードでのエンコード
errors テキストモードでデコードしたときの処理方法
newline テキストモードで読み込んだときの改行コードの変換方法
closefd  
opener  
f ファイルオブジェクト

readメソッド

ファイルオブジェクトのreadメソッドでファイルを読み込んでみます。

r = f.read(size)
変数 内容
f ファイルオブジェクト
size 省略可。読み込む文字数かバイト数。
r ファイルオブジェクトがテキストモードの場合は文字列、バイナリモードの場合はbytesオブジェクト

試してみました。

with open('test.txt', mode='rt', encoding='utf-8') as f:
    read_text = f.read()

print(read_text)

出力はこうなります。

いろはにほへと ちりぬるを
わかよたれそ つねならむ
うゐのおくやま けふこえて
あさきゆめみし ゑひもせす

読み込むサイズを指定してみました。

with open('test.txt', mode='rt', encoding='utf-8') as f:
    read_text = f.read(15)

print(read_text)

出力はこうなります。

いろはにほへと ちりぬるを

readlineメソッド

ファイルから1行読み込みます。空行の場合の戻り値は改行コードのみの文字列になります。ファイルの終端に達すると空の文字列が返ります。

t = f.readline()
変数 内容
f ファイルオブジェクト
t 文字列

試してみました。

read_text = []
with open('test.txt', mode='rt', encoding='utf-8') as f:
    read_text.append(f.readline())
    read_text.append(f.readline())

print(read_text)

出力はこうなります。

['いろはにほへと ちりぬるを\n', 'わかよたれそ つねならむ\n']

readlinesメソッド

ファイルを末端まで1行ずつ読み込みます。

t = f.readlines()
変数 内容
f ファイルオブジェクト
t 文字列のリスト

試してみました。

with open('test.txt', mode='rt', encoding='utf-8') as f:
    read_text = f.readlines()

print(read_text)

出力はこうなります。

['いろはにほへと ちりぬるを\n', 'わかよたれそ つねならむ\n', 'うゐのおくやま けふこえて\n', 'あさきゆめみし ゑひもせす\n']

listメソッドで読み込む

ファイルオブジェクトをリストメソッドの引数にすることで、リストとして読み込みます。

L = list(f)
変数 内容
f ファイルオブジェクト
L 文字列のリスト

試してみました。

with open('test.txt', mode='rt', encoding='utf-8') as f:
    read_text = list(f)

print(read_text)

出力はこうなります。

['いろはにほへと ちりぬるを\n', 'わかよたれそ つねならむ\n', 'うゐのおくやま けふこえて\n', 'あさきゆめみし ゑひもせす\n']

forループで読み込む

forループを使ってファイルオブジェクトから読み込みます。

試してみました。

read_text = []
with open('test.txt', mode='rt', encoding='utf-8') as f:
    for line in f:
        read_text.append(line)

print(read_text)

出力はこうなります。

['いろはにほへと ちりぬるを\n', 'わかよたれそ つねならむ\n', 'うゐのおくやま けふこえて\n', 'あさきゆめみし ゑひもせす\n']

広告

Pythonのファイル入出力カテゴリの投稿