我有一个大文件传输(比如 4gb 左右),而不是使用shutil,我只是以正常文件方式打开并写入它,这样我可以在它移动时包含一个进度百分比。
然后我想到尝试尝试恢复文件写入,如果由于某种原因它在此过程中失败了。虽然我没有运气。我认为这将是抵消源文件读取和使用搜索的巧妙组合,但到目前为止我还没有运气。有任何想法吗?
此外,是否有某种动态方法来计算读取和写入文件时使用的块大小?我对该领域相当陌生,只是阅读以使用更大的文件来获取更大的文件(我目前使用的是 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更多的数据。有任何想法吗?