私はディスクに5GBのデータファイルを持っており、ファイルの最後に100MBのデータセットを追加したいと思います。私はファイル内の元のデータを変更したり移動したりしたくない。私は長いファイルの長いリストとしてホールファイルをメモリに読み込んで、私の小さな新しいデータを追加することができますが、それは遅すぎます。どのように私はこれをより効率的に行うことができますか? 穴のファイルをメモリに読み込まずに大きなファイルをPythonで修正して書き込む
私は、長いロングリストとして大きなデータストリーム、たとえば5GBを生成するスクリプトを持っており、これらのデータをファイルに保存する必要があります。私は最初にリストを生成して一度に出力しようとしましたが、リストが増加するにつれて、コンピュータは非常に厳しく減速しました。だから私はそれらを数回出力することに決めました:私は100MBのリストがあるたびに出力し、リストをクリアします。 (これが私が最初の問題を抱えている理由です) これを行う方法はわかりません。これを行うことができるlibや関数はありますか?
答えて
第二の点から始めるのをしてみましょう:あなたはメモリに格納リストが使用可能なRAMよりも大きい場合、コンピュータはラムとしてHDを使用して開始され、これは深刻なすべてのものを遅らせます。あなたの状況で出力する最適な方法は、可能な限りラムを埋めることです(あなたのPC上で実行されるソフトウェアの残りの部分には常に十分なスペースを確保してください)。
リストをファイルに保存する最も速い方法は、pickle
を使用するため、書式化されたものよりもはるかに少ないバイナリデータを格納するようになっています。
ファイルに書き込むときは、ファイルを常に開いたままにしてください(with open('namefile', 'w') as f
など)。このように、ファイルを開く/閉じる時間を節約すると、カーソルは常に最後になります。あなたがそれを行うことに決めたら、何か悪いことが起きたときにデータを失わないようにファイルを書き終えたら、f.flush()
を使ってください。とにかくappend
メソッドは良い選択肢です。
あなたはいくつかのコードを提供する場合、あなたを助けるために容易になるだろう...
スピードにピックルを使用するようアドバイスしないでください。これは適切なツールではありません。構造化されたデータの速度を望むのであれば、バイナリioを使用しますが、pickleは使用しないでください。 –
これは別の方法です... –
- 1. BufferedOutputStreamを使用して大きなファイルを書き込む
- 2. ファイルに書き込むpython
- 3. ファイルに書き込む(Python)
- 4. ファイルに書き込む(Python)
- 5. Pythonでファイルに書き込む、Arduinoでファイルを読み込む
- 6. PythonでHDF5ファイルに大量の数値を書き込む
- 7. Python - 間隔でファイルを書き込む
- 8. PythonでExcelファイルを書き込む
- 9. Python - Pythonファイルに書き込む?
- 10. PythonでUTF-8ファイルに書き込む
- 11. Pythonでファイルに書き込む
- 12. Pythonでtxtファイルに書き込む
- 13. HDI:大きな文字列xmlをファイルに書き込む(python xml.dom.minidom)
- 14. 非常に大きなファイルを書き込むIOError
- 15. 大きなファイルをSQL Server FILESTREAMに書き込む方法は?
- 16. ブロックサイズより大きなファイルをhdfsに書き込む
- 17. python。ファイルに書き込む、動作を理解できない
- 18. python、Jsonをファイルに書き込む
- 19. Python - データフレームをCSVファイルに書き込む
- 20. Python - ログをファイルに書き込む
- 21. Pythonファイルにバイトを書き込む
- 22. Pythonファイルにリストを書き込む
- 23. Pythonでファイルを書き込むときにファイル名をインクリメント
- 24. lxmlを使用してxmlファイルをシステムパフォーマンスデータで書き込むPython
- 25. PHPを使ってこの不正なXMLを修正し、そのファイルをサーバに書き込む方法
- 26. Pythonを使用して大きなcsvファイルを書き込むにはどうすればよいですか?
- 27. Pythonで値を追加してファイルに書き込む
- 28. JSONをPythonで解析してExcelファイルに書き込む
- 29. を作成して、PythonでCSVファイルに書き込む
- 30. pythonでモジュールnetcdf4を使用してNetCDF3ファイルに書き込む
あなたは、既存のファイルに追加します。標準のファイルモードの概要については、[この回答](http://stackoverflow.com/a/1466036/4014959)を参照してください。パート1の –
、追加モードでファイルを開くだけです。第2部では、あなたのコードを教えてください。 –