加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在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应该没问题. (当你选择最好的块大小时,我不认为传输文件的大小很重要)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读