2つの大きなテキストファイルがあり、それぞれ2GB近くあります。 diff f1.txt f2.txt
のようなものが必要です。このタスクを高速に行う方法はありますか?標準difflib
が遅すぎます。 difflib
はPythonで完全に実装されているので、より速い方法があると私は想定しています。diff 2つの大きなファイルをPythonで返します
答えて
スクリプトが大きなファイルを処理できるようにdifflibを使用することはどうですか?ファイルをメモリにロードせず、ファイルのファイルを繰り返し、チャンク内のdiffを実行します。たとえば、一度に100行。
import difflib
d = difflib.Differ()
f1 = open('bigfile1')
f2 = open('bigfile2')
b1 = []
b2 = []
for n, lines in enumerate(zip(f1,f2)):
if not (n % 100 == 0):
b1.append(lines[0])
b2.append(lines[1])
else:
diff = d.compare("".join(b1), "".join(b2))
b1 = []
b2 = []
print ''.join(list(diff))
diff = d.compare("".join(b1), "".join(b2))
print ''.join(list(diff))
f1.close()
f2.close()
はい、私は同様のスクリプトを試していました。あまりにも遅い:( –
あなたの他の高速かつ移植可能なオプションは、プラットフォームのdiffユーティリティをインストールし、Pythonラッパーを介してそれを使用するようにユーザーに依頼するでしょう。 –
Pythonの 'difflib'は、あなたが何をしても遅いです。最高の場合は0.5秒、最悪の場合は数分かかります。バイナリ差分は0.033秒かかります。 – Pithikos
- 1. 2つの大きなファイルのpythonチェックサム検証
- 2. GH APIを使用して、2つのコミット間で1つのファイルのdiffデータを取得できますか?
- 3. PHPで2つの大きなCSVファイルをマージする
- 4. 2つのコミット間でdiffファイルをjgitでアーカイブするには?
- 5. 大きなファイルを繰り返すpowershell
- 6. Pythonで大きなzipファイルをダウンロード
- 7. Pythonは - 大きなファイル
- 8. python - 大きなサイズのファイルを処理する際の問題
- 9. SQL:2つのカラムから2つの最大日付を返します
- 10. 大きなファイルをアップロードできません - GoogleドライブのPython API
- 11. 2つの大きなファイルで一致するIDを見つける
- 12. PHP file_get_contents大きなファイルに504を返します
- 13. 2つのJsonファイルのdiffを生成するJavaライブラリ
- 14. 2つの大きなテキストファイルの効率的なファイル比較
- 15. Docker's aufs diffフォルダのサイズが大きくなっています
- 16. 2つの大きなcsvファイル(Python)で文字列の部分文字列を見つける方法
- 17. Excel関数は最大2つの値を返します
- 18. 同じサイズの2つの大きなファイルの量的な違いはどのような情報ですか?
- 19. 同じファイルの2つのセクションのdiffを表示するのにどのツールを使用できますか?
- 20. 2つの大きな列を2つに分割する
- 21. Pythonは2つの同じ文字列を返して偽で返します。
- 22. powershellでGet-childitemを持つファイルのみを返します2
- 23. 大きなファイルをPythonで修正して書き込む
- 24. Azureで大きなファイルをアップロードした後、PHP - $ _FILESを返します
- 25. 変数を1つの大きな変数に連結してPythonで返します
- 26. 2つの大きなsqlファイルを比較して、データを回復する相違点を見つけよう。
- 27. diffはgitpythonで2つのブランチのコミットを行います
- 28. Pythonのファイルへの大きなバイナリコード
- 29. GITの2つの異なるブランチの2つのファイルを比較します
- 30. Mesosの2つのマイクロサービス間で大きなファイルを共有するには?
なぜ「diff f1.txt f2.txt」を使用しないのですか? – delnan
@delnan:スクリプトプラットフォームに依存するためです。ファイルの差分を取得するには、スクリプトの他の部分のいずれか1つだけです –
psycoアクセラレーションまたはUnladen SwallowまたはPyPyビルドで試してみるのは可能でしょうか? – ncoghlan