ファイルからデータを読み込み、処理したり、ファイルに戻したりするには、ファイルが大きすぎると一時ファイルにメモリを浪費しないでください1つのチャンクで?Pythonを使用してファイル内のテキストを読み込み、操作し、書き直す方法
-1
A
答えて
0
次のコードは動作するはずです:
chunksize = 64*1024 #arbitrary number
offset = 0
with open(path, 'r+b') as file:
while True:
file.seek(chunksize*offset) # sets pointer to reading spot
chunk = file.read(chunksize)
if len(chunk) == 0: # checks if EoF
break
elif len(chunk) % 16 != 0: # adds bytes to the chunk if it is the last chunk and size doesnt divide by 16 (if processing text of specific size, my case 16 bytes)
chunk += ' ' * (16 - len(chunk) % 16)
file.seek(chunksize*offset) # returns pointer to beginning of the chunk in order to rewrite the data that was encrypted
file.write(do_something(chunk)) # edits and writes data to file
offset += 1
コードは、データを読み込むチャンクの先頭に戻って、それを上書きします。操作されたデータが読み取りデータより大きい場合は機能しません。
+0
これは、操作されたデータが 'chunksize'よりも小さい場合、ファイルの部分を変更しません。 'chunksize * offset'を求めるのではなく、変更されたデータが実際にどこで終了するのかを把握する必要があります。 –
+0
これを動作させるには、データを正確に読み取ったデータのサイズを操作しなければなりません。 'chunksize * offset'を使わないと、書かれたデータの終わりと読んだデータの始めの間に壊れたデータがあります – IsaacDj
関連する問題
- 1. マルチスレッドを使用したファイル読み込みの書き込み
- 2. Python:大容量のファイル読み込みストア操作書き込みプログラムでのRAM使用量の削減
- 3. Boost :: Asio読み込み/書き込み操作
- 4. Androidでファイル操作を使用して設定データを書き込み、読み取る
- 5. QT Creatorを使用してLineEditとの間でテキストを書き込み、読み込む方法は?
- 6. Pythonのヘルプ、txtファイルの読み込みと書き込み
- 7. pythonファイルの読み込み、行ごとの書き込み
- 8. ファイルへの書き込み操作
- 9. Javaのファイルにテキストを作成して書き込みます
- 10. ファイル読み込みと書き込み
- 11. 読み込み操作でデータベースの書き込み操作をブロックできますか?
- 12. jQueryを使用してdivにPHPファイルを読み込む方法パラメータを渡して読み込み
- 13. Node.js 0.10でストリームを読み書きして直ちに書き込みストリームをチェーンする方法は?
- 14. MongoDB読み書き操作
- 15. 書き込み操作コスト
- 16. Qt5でJSonファイルを作成/読み込み/書き込む方法
- 17. データベース上で多くの読み込み/書き込み操作を実行する方法
- 18. テキストファイルを読み込み、ASP.netを使用してデータを操作するC#
- 19. VBAを使用してExcelファイルの現在の読み取り/書き込みユーザーを取得する方法
- 20. ファイルへの読み書きの高速読み込みと書き込み
- 21. ObjectiveCは読み取り時に書き込み操作を実行します
- 22. Linuxカーネルでの原子操作の読み込みと書き込み
- 23. マルチスレッドの読み書きPythonを使用したファイル
- 24. << and >をオーバーロードしてファイルの書き込みとクラスの読み込みに使用する
- 25. ファイルから読み込み、javaを使用して別のファイルに書き込んだら操作しますか?
- 26. 読み取りと書き込みJSONファイル使用してjavascriptの
- 27. nibファイルを使用してUIViewを読み込む方法
- 28. PHP CLIを使用して.user.iniファイルを読み込む方法
- 29. JavaベースのAPIを使用したExcelの読み込み/書き込み - vogella
- 30. WPFの読み込みと書き込みRichTextBoxのテキスト
文字を変更したり、いくつかの文字を追加/削除して出力ファイルのサイズを変更することを意味しますか?最初のケースでは、チャンクを読み込んだだけでファイル内のチャンクを上書きします。 2番目のケース(ファイルのlenthを変更する)では動作しません。別の出力ファイルを作成する必要があります。 –