在Python中恢复大文件写入
发布时间:2020-12-20 13:20:40 所属栏目:Python 来源:网络整理
导读:我有一个很大的文件传输(比如4gb左右),而不是使用shutil,我只是打开并以正常的文件方式编写它,所以我可以在它移动时包含进度百分比. 然后我想到尝试恢复文件写入,如果由于某种原因它在此过程中被剔除.我没有运气.我推测这将是抵消源文件读取和使用搜索的一些
我有一个很大的文件传输(比如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更多数据,这可能是其他人可能明显的原因.有任何想法吗? 解决方法
对于问题的第二部分,数据通常以512字节的块读取和写入硬盘驱动器.因此,使用块大小是其中的倍数应该提供最有效的传输.除此之外,它并不重要.请记住,无论您指定的块大小是I / O操作在任何给定时间存储在内存中的数据量,因此不要选择大到足以占用大量RAM的数据.我认为8K(8192)是一个常见的选择,但64K应该没问题. (当你选择最好的块大小时,我不认为传输文件的大小很重要)
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |