我有一個很大的文件傳輸(比如說4GB左右),而不是使用shutil,我只是打開並以普通文件的方式寫入,所以我可以在移動時包含進度百分比沿。恢復一個大文件在Python中寫入
然後,我想到嘗試恢復文件寫入,如果由於某種原因它在這個過程中停止了。雖然我沒有任何運氣。我推測這將是一些巧妙的組合,抵消源文件的讀取和使用搜索,但是迄今爲止我還沒有任何運氣。有任何想法嗎?
此外,是否有某種動態的方式來確定讀取和寫入文件時要使用的塊大小?我對這個領域相當新手,只是閱讀使用更大的文件大文件(我目前使用65536)。有沒有一個聰明的方法來做到這一點,或者只是猜測..?多謝你們。
這裏是追加文件傳輸的代碼片段:
newsrc = open(src, 'rb')
dest_size = os.stat(destFile).st_size
print 'Dest file exists, resuming at block %s' % dest_size
newsrc.seek(dest_size)
newdest = open(destFile, 'a')
cur_block_pos = dest_size
# Start copying file
while True:
cur_block = newsrc.read(131072)
cur_block_pos += 131072
if not cur_block:
break
else:
newdest.write(cur_block)
它不追加,並開始寫作,但隨後在最後寫道:dest_size更多的數據比它應該對可能明顯原因的其他人。有任何想法嗎?
文件傳輸出了什麼問題? – 2010-07-26 02:13:19
你能告訴我們你試圖追加到文件嗎?你應該能夠尋求並繼續寫作。你打開使用文件模式「A」? – 2010-07-26 07:14:31
文件傳輸沒有什麼問題。但是,當我開發這個代碼將網絡文件大小移動到6 + gb時,能夠啓動它來觀察新的變化並讓它在大文件傳輸中停止的地方很好。我已將代碼添加到操作中。 – Cryptite 2010-08-08 20:35:44