Python でファイルから特定の行を読み取る方法

Heys 2023年1月30日
  1. 小さなサイズのファイルの特定の行を読み取る fileobject.readlines()
  2. Python で特定の行を読み取るための fileobjectfor ループ
  3. Python で特定の行を読み取る linecache モジュール
  4. Python で大きなファイルから特定の行を読み取るときに列挙する
Python でファイルから特定の行を読み取る方法

Python でファイルを読み取る一般的な方法は、ファイルを完全に読み取ってから、特定の行を処理することです。Python でのファイルの読み取りは高速です。たとえば、100MiB ファイルを書き込むのにおよそ 0.67 秒かかります。ただし、ファイルサイズが 100 MB を超えると、メモリに読み込まれるときにメモリの問題が発生します。

Python には、次のセクションで紹介するように、ファイルから特定の行を読み取るための 3つの組み込みメソッドがあります。

小さなサイズのファイルの特定の行を読み取る fileobject.readlines()

fileobject.readlines() はすべてのファイルの内容をメモリに読み込みます。リストのスライスを使用して特定の行を読み取ることができます。

10 行目を読む必要があるだけなら

with open("file.txt") as f:
    data = f.readlines()[10]
print(data)

10 行から 100 行を読み取る必要がある場合、

with open("file.txt") as f:
    data = f.readlines()[10:100]
print(data)

Python で特定の行を読み取るための fileobjectfor ループ

for line in fileobject は小さなファイルのクイックソリューションでもあります。

lines = [10, 100]
data = []
i = 0

with open("file.txt", "r+") as f:
    for line in f:
        if i in lines:
            data.append(line.strip)

        i = i + 1

print(data)

Python で特定の行を読み取る linecache モジュール

多くのファイルを読み取るための linecache は、繰り返しまたは多くの行を抽出することができます。

import linecache

data = linecache.getline("file.txt", 10).strip()

文字列メソッド strip() は両端から空白を取り除いた文字列を返します。

linecache モジュールを使用すると、キャッシュを使用して内部で最適化しながら、Python ソースファイルから任意の行を取得できます。これは、単一のファイルから多くの行を読み取る一般的な方法です。トレースバックモジュールは、これを使用して、フォーマットされたトレースバックに含まれるソース行を取得します。

Python で大きなファイルから特定の行を読み取るときに列挙する

ファイルを読み取るときに、サイズが大きいと、メモリに収まらないなどの問題が発生する可能性があります。この場合、enumerate() を使用できます。

with open("file.txt") as f:
    for i, line in enumerate(f):
        pass  # process line i

n 行目については、i = n-1 であることに注意してください。

enumerate() 関数は、トラバース可能なデータオブジェクト(リスト、タプル、文字列など)をインデックスシーケンスに結合し、データとデータ添え字を同時に一覧表示します。ために使用されます。ループ。

関連記事 - Python File