【Python】テキストファイルの読込方法について解説

python Python

この記事の内容

Pythonで、テキストファイルの読込方法について解説しています。

基本的な内容で、よく使う処理になりますので、確実におさえておく必要のある項目です。

この記事を読むことで、以下の内容を理解することができます。

  • テキストファイルを開く/閉じる処理
  • テキストファイルの各種読込処理

では、実際のソースコードを交えながら説明を進めていきます。

テキストファイルの読込方法

ファイルを開く/閉じる

まずは、テキストファイルを読み込むために必要な、ファイルを開くおよび閉じる処理について解説します。

open(ファイルパス)でファイルを開くことができます。

file.close()でファイルを閉じることができます。

注意すべきは、ファイルをopenしたまま、エラーが発生して、close()が呼ばれないと、ファイルが開いたままの状態になってしまいます。

これを防ぐために、finallyでfile.close()をして、エラー発生時も確実にファイルを閉じるようにしています。

def main(file_path):
    file = open(file_path)
    try:
        # 処理を記載
    finally:
        # エラーが発生しても、確実にファイルを閉じるために、finallyでfileを閉じる
        file.close()

if __name__ == "__main__":
    file_path = 'sample.txt'
    main(file_path)

 

また、上記と同様に、エラーが発生しても、close()を呼ぶための方法が別にあります。
withを使用する方法になります。
こちらのほうが簡潔でよく使われます。

withのスコープを抜けると、自動的にclose()処理を呼び出してくれます。

def main(file_path):
    with open(file_path) as file:
        # 処理を記載
    
    # withのスコープを抜けると、自動的にclose()を呼び出してくれる

if __name__ == "__main__":
    file_path = 'sample.txt'
    main(file_path)

テキストファイルの読込(バイト数単位)

以下の内容のsample.txtを読込ます。

This is the first line.
This is the second line.
This is the last line.

まずは、file.read(読み込むバイト数)でテキストファイルの内容を読み込む処理になります。

以下の通り、10byte分読み込んだ結果がprint()で表示されます。

def main(file_path):
    with open(file_path) as file:
        # 10byte読み込む
        text = file.read(10)

        # 10byte分表示される
        print(text)
        # >> This is th

if __name__ == "__main__":
    file_path = 'sample.txt'
    main(file_path)

テキストファイルの読込(行単位)

先ほどは、byte数を指定して読み込みました。

次に行単位で読み込む処理を行います。

行単位は、readline()関数を使用します。

def main(file_path):
    with open(file_path) as file:
        # 1行読み込む
        text = file.readline()

        # 1行分表示される
        print(text)
        # >> This is the first line.

if __name__ == "__main__":
    file_path = 'sample.txt'
    main(file_path)

readline()を続けて呼ぶとどうなるかを説明します。

1回目は1行目が読み込まれました。

2回目は、1行目はすでに読み込まれているので2行目が読み込まれることになります。

def main(file_path):
    with open(file_path) as file:
        # 1行読み込む
        text = file.readline()

        # 1行分表示される
        print(text)
        # >> This is the first line.

        # 1行読み込む(1行目はすでに読み込んでいるので、次の行(2行目)が読み込まれる)
        text = file.readline()

        # 1行分表示される(2行目)
        print(text)
        # >> This is the second line.

if __name__ == "__main__":
    file_path = 'sample.txt'
    main(file_path)

テキストファイルの読込(全行読み込み)

では、すべての行を読み込む場合どうするかを解説します。

readlines()関数を使用します。

この関数を使用することで、すべての行を読み込むことができます。

読み込みは、list形式で読み込まれます

def main(file_path):
    with open(file_path) as file:
        # 全ての行を読み込む(list形式で読み込み)
        text = file.readlines()

        # 全ての行が表示される(list)
        print(text)
        # >> ['This is the first line.\n', 'This is the second line.\n', 'This is the last line.']

        print(type(text))
        # >> <class 'list'>

if __name__ == "__main__":
    file_path = 'sample.txt'
    main(file_path)

まとめ

この記事では、以下のテキストファイルの読込処理方法について学びました。

  • ファイルを開く/閉じる方法
  • ファイルをbyte単位で読み込む方法
  • ファイルを行単位で読み込む方法
  • ファイルを全行読み込む方法

コメント