Python の csv モジュールを使用して、大きな csv ファイル全体をリストの遅延リストに読み込むことは可能ですか?
Clojureには、大きなファイルを解析して遅延シーケンス(シーケンスのシーケンス)を返すcsv解析モジュールがあるため、これを求めています。Pythonでそれが可能かどうか疑問に思っています。
Python の csv モジュールを使用して、大きな csv ファイル全体をリストの遅延リストに読み込むことは可能ですか?
Clojureには、大きなファイルを解析して遅延シーケンス(シーケンスのシーケンス)を返すcsv解析モジュールがあるため、これを求めています。Pythonでそれが可能かどうか疑問に思っています。
誤解していない限り、これはデフォルトの動作であり、csv ファイルを読み取る際の本質です。
import csv
def lazy(csvfile):
with open(csvfile) as f:
r = csv.reader(f)
for row in r:
yield row
一度に 1 行ずつ返されます。
csv
モジュールはreader
デフォルトで遅延しています。
ファイルから一度に 1 行ずつ読み取り、それをリストに解析して、そのリストを返します。
Python のリーダーまたは DictReader はジェネレーターです。行は、オブジェクトの next() メソッドが呼び出されたときにのみ生成されます。
csv モジュールは、一度に 1 行ずつデータを遅延ロードします。