Python でファイルを読み書きする方法②

前回は Python でテキストファイルに文字列を書き込む方法についてご紹介しました。今回は Python でテキストファイルを読み込む方法をご紹介します。

他の Python 関連記事はこちらからご覧ください。

目次

ファイル操作のきほん(復習)

ファイル作成と同様、 Python でファイルからデータを読み込むには

  1. ファイルを開く
  2. 読み書きなどの処理を行う
  3. ファイルを閉じる

この手順で進めていきます。

ここでは前回の記事で作成した、 sample.txt がフォルダ内にすでにあるものとします。 sample.txt が存在しない場合は以下の内容で作成してください。

Hello, python!
Goodbye!

以下の内容で read_file.py を作成して実行してください。

# read_file.py
# ファイルを開く
f = open('sample.txt', 'r')

# ファイルから一行ずつデータを読み込む
for line in f.readlines():
    print(line)

# ファイルを閉じる
f.close()

実行してみると、ターミナルに以下の内容が出力されます。

Hello, python!

Goodbye!

余計な改行が入ってしまっていますが、まずはファイルの中身を読み込むことができました。

ファイルを開く

ファイルを書き込むときと同様、ファイルを読み込むのにも open 関数を使います。

ファイルに書き込む際にはオープンモードに 'w' を指定していましたが、ファイルを読み込む際には 'r' を指定します。 'r' はread(読む)の略です。

書き込みと異なり、読み込むファイルが存在しないときにはエラーになるので注意してください。

ファイルから読み込む

ファイルからテキストを読み込むには、ファイルオブジェクトの readlines メソッドを使います。

readlines メソッドはファイルの中身を改行文字( \n )で区切って文字列をリストで返してくれます。

ただし、1点注意があります。実行結果にもある通り、 readlines メソッドは「改行文字も含めて」文字列を返すしくみになっており、 print 関数に渡すと二重で改行が入ってしまいます。

print('Hello, python!\n')
print('Goodbye!\n')

のように、改行文字も含めて print 関数に渡されてしまっているイメージです。

2重改行を回避するには

1つ目の回避策: print(line, end='')を使う

Python の print 関数には行末文字を指定するデフォルト引数 end があります。 end のデフォルト値は '\n' (改行文字)になっているので、 '' (何もなし)にして実行すると行末の改行を削除できます。

7行目を以下のように修正して再度実行してみてください。

    print(line, end='')

文末の改行が削除され、ターミナルに以下のように表示されるはずです。

Hello, python!
Goodbye!

2つ目の回避策: line.strip() を使う

Python の文字列には「前後の改行文字・空白文字をまとめて削除する」メソッドが備わっています。

7行目を以下のように修正して再実行してみてください。

    print(line.strip())
Hello, python!
Goodbye!

こちらも改行を削除して表示することができました。

Python の文字列に対して strip メソッドを呼び出すと、改行文字を削除して表示してくれます。ほかにも、前後の空白文字などもまとめて削除してくれます。

いかがだったでしょうか。

次回はより実践的なトピックとして、CSVファイルの読み書きを扱います。

そのほかの Python の記事一覧はこちらから。

(Visited 39 times, 1 visits today)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次