連載
» 2019年09月17日 05時00分 公開

Python入門:[Python入門]ファイル操作の基本 (2/3)

[かわさきしんじ,Deep Insider編集部]

ファイルの内容を読み込むメソッド

 テキストファイルの内容を読み込むメソッドには以下がある(引数を指定しなかった場合。これら3つのメソッドには、引数として読み込むデータ量をバイト単位で指定できるが、これについては本稿では解説を省略する)。

  • readメソッド:ファイルの内容を全て読み込んで、それを1つの文字列として返送する
  • readlineメソッド:ファイルから1行を読み込んで、それを1つの文字列として返送する
  • readlinesメソッド:ファイルの内容を全て読み込んで、各行を要素とするリストを返送する(ただし、readlinesメソッドを使って反復処理を行うよりも、効率的な方法がある。後述)

 重要なのは、Pythonでテキストファイルを扱うときには(読み込み時も書き込み時も)常に文字列がやりとりされる点だ。テキストファイルから読み込んだ値は全て文字列であり、逆にテキストファイルへ書き込むのは全て文字列である必要がある。

 以下では、各メソッドの使い方について見ていこう。ここでは各行に行番号を付けて、表示する処理を3つのメソッドを使って実現してみる。これはテキストファイルを処理する際には、行ごとに何らかの処理を行うことがよくあるからだ。

readメソッド

 上で述べた通り、readメソッドはファイルの内容を全て読み込んで、それを1つの文字列として返す(読み込むサイズを指定することも可能。この場合はファイル末尾に達するか、指定されたサイズに到達するまで読み込みを行う)。実際に試してみよう。

lines = myfile.read()
lines

readメソッドはファイルの全ての内容を読み込む

 これを実行すると、次のようになる。

実行結果 実行結果

 出力を見ると、改行コード(\n)を途中に挟む形で全ての行が1つの文字列にまとめられていることが分かる。各行に行番号を付けて出力するには、文字列のsplitメソッドを使い改行コードを区切りとして文字列を分割し、分割された文字列を要素とするリストを得て、それらを反復処理すればよい。これをコードにまとめたものが以下だ(enumerate関数は要素のインデックスと要素自身を反復するために使っている)。

for count, line in enumerate(lines.split('\n')):
    print(f'{count}: {line}')

readメソッドで一度に全てを取り出したファイルの内容を行ごとに処理する

 以下に実行結果を示す。行番号付きでファイルの内容が表示されたことを確認してほしい。

実行結果 実行結果

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。