大きなデータを処理しているので、データを読み取るための良い方法を見つけることが非常に重要です。 私は少し違う読み方について混乱しています。Pythonで大きなデータを読み取るさまざまな方法
1.f=gzip.open(file,'r')
for line in f:
process line
#how can I process nth line? can I?
2.f=gzip.open(file,'r').readlines()
#f is a list
f[10000]
#we can process nth line
3.f=gzip.open(file,'r')
while True:
linelist=list(islice(f,4))
4.for line in fileinput.input():
process line
2と3の違いは何ですか?私はちょうど彼らのメモリ使用量が同じであることがわかります。 islice()はファイル全体を最初にメモリにロードする必要があります。 そして、私は4番目の方法がメモリ消費量が最も少ないと聞いています。ビットごとに処理していますよね? 10GB規模のファイルの場合、どのファイルの読み込み方法をお勧めしますか?どんな思考/情報も歓迎されます。 thx
編集:私の問題の1つは、ランダムに特定の行をランダムに選ぶ必要があると思います。 say:
f1=open(inputfile1, 'r')
while True:
line_group1 = list(islice(f1, 3))
if not line_group1:
break
#then process specific lines say, the second line.
processed 2nd line
if (....):
LIST1.append(line_group1[0])
LIST1.append(processed 2nd line)
LIST1.append(line_group1[2])
sth。 like
with open(file,'r') as f,
for line in f:
# process line
が正しく動作しない可能性がありますか?
大きなテキストファイルにランダムにアクセスする必要がありますか? –
実際、必ずしもそうではありません。基本的には、行単位で処理してください。またはN行をグループとして表示します。 – user815408