Python3ファイル読み込み方法|open()関数、with構文による例外処理など

Pocket

Python3でテキストファイルを読み込む方法

Python3でテキストファイルを読み込むにはopen()関数を用いてファイルオブジェクト(_io.TextIOWrapper)を取得します。

open()関数の書式

open(‘ファイルパス’, mode=’読み込みモード’, encoding=’エンコード’)

ファイルオブジェクトの基本操作

ファイルオブジェクトのread()メソッドはテキストファイルの全文をstr型で取得します。

一方、readlines()メソッドはテキストファイル内の1行1行を要素とするリストを返します。

close()メソッドでファイルを閉じます。

最も原始的なファイル読み込みのサンプルプログラム

通常、ファイルの読み書きを実装する場合、必ず例外処理を書いて確実にファイルをクローズできるようにしますが、ここでは例外処理を一切書かない場合の最もシンプルなPython3におけるファイル読み込みのサンプルプログラムを掲載しています。

<実行結果>

これはテストです。
これはテストです。
これはテストです。

例外処理について

ファイルの読み込み/書き込み時は確実にclose()が実行されるようにするために、
try~finally構文か、またはwith構文を利用します。

下記のPython3のサンプルプログラムではtry~finally構文を使って、予期せぬエラーが発生しても必ずファイルを閉じられるようにしています。

尚、try~except構文open()関数が失敗した場合のために使っています。

※with構文の使い方は下の方に掲載してあります。

テキストファイルを読み込みread()で全文を取得する

ファイルパスには絶対パスを指定しています。

指定したファイルパスにファイルが存在しない場合はエラーになります。

テキストファイルを読み込む場合、通常はmode=’r’でファイルオブジェクトを読み込みます。

今回はエンコーディングにutf-8を指定しましたが、Shift_JISを読み込む場合はencoding=’sjis’と書きます。

テキストファイルを読み込みreadlines()で全文を表示する

readlines()の戻り値はリスト型です。テキストファイルの1行が1要素に該当します。

またreadlines()で読み込むとき、改行文字(\n)も含まれます。そのためprint()すると下記のようになります。

これはテストです。

これはテストです。

これはテストです。

無駄な改行を消して綺麗にprint()するにはprint(line.replace(‘\n’, ”))等とし改行文字を空の文字列に置換するとうまくいきます。あるいはprint(line.strip())と書くことで改行コードを取り除くことができます。

(例)

f = open(‘c:/test/test.txt’, mode=’r’, encoding=’utf-8′)
try:
        text = f.readlines()
        for line in text:
                print(line.strip())
finally:
        f.close()

with構文を使ってファイルを読み込む場合

with構文を使えばtry~finallyによる例外処理を書かなくても確実にファイルを閉じることができます。またwith構文を利用する際はclose()を書かなくてOKです。自動的にwith構文の最後に、close()を呼んでくれます。

with構文の書式

with open() as 変数名:
        処理

with構文を用いて確実にclose()する場合のファイル読み込みのサンプルプログラム

(参考)Python3におけるテキストファイルへの書き込み

Python3におけるテキストファイルへの書き込みは下記サンプルプログラムのように書きます。

尚、wが上書きモードでaが追記モードです。

with構文を利用しているのでclose()を書く必要はありません。自動的にclose()されます。

<実行結果>

ファイルの書き込みに成功しました。

Python3リファレンスTOPへ戻る

あわせて読みたい

Amazonスポンサードリンク