テキストファイルに行/行番号を追加するための高速な方法
-
16-09-2019 - |
質問
私は、ファイルウィッヒは約12ミロンのラインを持っている必要があり、それぞれの行は次のようになります:
0701648016480002020000002030300000200907242058CRLF
私は、データの前に行番号を追加して達成しようとしている、数字は固定長を持っている必要があります。
この背後にある考え方は、SQLServerのテーブルに、このファイルの一括挿入を行い、その後、一意の識別子を持つようにそれぞれの行を必要とし、それに特定の操作を実行することができます。私は、データベース側でこれをやってみましたが、私は良いパフォーマンスを達成することができましhaven't(少なくとも、および1' の下で、4'の下に理想的である)。
今、私は次のようになりますのpythonでソリューションをしようとしています。
file=open('file.cas', 'r')
lines=file.readlines()
file.close()
text = ['%d %s' % (i, line) for i, line in enumerate(lines)]
output = open("output.cas","w")
output.writelines(str("".join(text)))
output.close()
これが機能するかどうか、私は知りませんが、それは私が、私は新しいことをしようとして続ける前に実行し、副作用ます方法のアイデアを持つお手伝いします、私もCでそれをやって思ったので、私はより良いを持っていますメモリ制御ます。
これは、低レベル言語でそれをやって助けるのでしょうか?誰もが、私はそれが行われているが、私は何かを見つけることができないしているかなり確信している、これを行うには良い方法を知っています。
感謝
解決
ああ、神様なし、一度に全12万行を読んでいません!あなたは、Pythonを使用するつもりなら、少なくともそれをこのように実行します。
file = open('file.cas', 'r')
try:
output = open('output.cas', 'w')
try:
output.writelines('%d %s' % tpl for tpl in enumerate(file))
finally:
output.close()
finally:
file.close()
時のファイル処理一行通るジェネレータ式を使用する。
他のヒント
なぜあなたは-n猫を試してみませんか?
ステファノが右ます:
$時間猫-n file.cas> output.cas
ちょうどので、あなたはそれがどのように速く見ることができる時間を使用してください。猫は、純粋なCのコードであるため、これは、Pythonよりも速くなります。