ファイルの内容を2番目のフィールドに基づいてソートします。大きなテキストファイルをPythonでソート
入力ファイル:
Jervie,12,M
Jaimy,11,F
Tony,23,M
Janey,11,F
出力ファイル:
Jaimy,11,F
Janey,11,F
Jervie,12,M
Tony,23,M
私たちは、外部ソートを使用する必要があります。
入力ファイルのサイズは4GBです。 RAMは1GBです。
私はthisを使用しましたが、すべてのコンテンツをint
として扱っているため動作しません。また、私は外部の並べ替えの各ターンでバッファサイズに関連する疑いがあります。それをどうやって決めるの?
このファイルは、整数のみでソートされます。
file = open("i2.txt","r")
temp_files = []
e = []
while True:
temp_file = tempfile.TemporaryFile()
e = list(islice(file,2))
if not e:
break
e.sort(key=lambda line: int(line.split()[0]))
temp_file.writelines(e)
temp_files.append(temp_file)
temp_file.flush()
temp_file.seek(0)
file.close()
with open('o.txt', 'w') as out:
out.writelines(imap('{}\n'.format, heapq.merge(*(imap(int, f) for f in temp_files))))
out.close()
第2フィールドでソートされた一時ファイルを作成することはできますが、それに基づいてどのようにマージするのですか?
質問は何ですか? –
何を試しましたか?トークンでトークンを読むときにファイルに書き込もうとします。 –
人が投票している –