Python – ファイル入出力 テキストファイルの読み込み
2012年1月8日 9:16 PM by Abalone




ファイルをopenする方法は前回書きました。
そこで、開いたテキストファイルから読み込みをやってみます。

まず、test.txtのファイル名でテキストファイルを作成しておきます。テキストエディタか何かで作成すればいいです。

Line 1
Line 2
Line 3
Line 4
Line 5

とりあえずこの5行を書き込んだファイルを作成して、読み込んでみます。

まず、open()でファイルを開きます。

fp = open('test.txt', 'r')

open()の第2引数には’r'を指定、読み込み用でオープンします。とりあえず読み込みしかしないので、読み込み用でオープンしておくことで、誤って書き込んで内容を破壊してしまうことを防ぎます。というほどのことでもないのですが、読み込みの時は読み込みモードでオープン。

テキストファイルの読み込みには、readline()メソッド、readlines()メソッドを使用します。まず、readline()。以下のコードを実行。

fp = open('test.txt', 'r')
print fp.readline()
fp.close()

出力結果は以下の通り。最初の1行が読み込まれて、print で表示されてます。使い終わったら忘れずにclose()。

Line 1

readline()は、繰り返せば次の行を読み込んでくれます。

fp = open('test.txt', 'r')
print fp.readline()
print fp.readline()
fp.close()

この出力結果は以下の通り。

Line 1

Line 2

ここでポイントは、出力結果に改行が含まれていることでしょうか。readline()は、行末の改行コードも含めて読み込みます。

複数行まとめて読み込むにはreadlines()メソッド。次のようなコードを書いてみます。

fp = open('test.txt', 'r')
lines = fp.readlines()
print lines
fp.close()

これを実行すると、以下の出力結果が得られます。

['Line 1\n', 'Line 2\n', 'Line 3\n', 'Line 4\n', 'Line 5\n']

各行が要素のリストが返却されます。何行目まで読み込まれるかというと、マニュアルによれば、EOFを読み込むまでとなっています。ファイルサイズによらず全部読み込むんじゃないだろうかと思われますが、そんなに大きなファイルで試したことがないので、どのくらいまで読み込めるのかは不明。

で、1行ずつ読み込んで処理したい場合等の状況も多いかと。この場合には、for文とreadline()を使うと1行ずつ読み込んで処理できます。

fp = open('test.txt', 'r')
for line in fp:
    print line
fp.close()

このコードは、open()で作成したファイルオブジェクトfpから1行ずつ読み込んで処理をしていきます。出力結果は以下の通り。

Line 1

Line 2

Line 3

Line 4

Line 5

1行ずつ読み込んでprintで出力されています。さらに、with節を使うと、close()しなくてもよいらしいです。以下のようなコードを書いてみます。

with open('test.txt', 'r') as fp:
    for line in fp:
        print line

出力結果はこの前のコード例と全く同じ。マニュアルによると、この構文はPython2.5以降で使えるとされています。こんな構文もあったんだなぁ。

次回はテキストファイルへの書き込みをやってみます。





トラックバックURL


この記事に対するコメント/トラックバックはまだありません


コメントをどうぞ

お名前(必須)
Eメールアドレス(公開されません)(必須)