如何解决使用Python提取ZipFile,显示进度百分比?
extract方法没有为此提供回调,因此必须使用它getinfo
来获取e的未压缩大小,然后以块为单位打开从文件中读取的文件,然后将其写入到您要删除的文件中并更新百分比如果需要的话,还必须还原mtime:
import zipfile
z = zipfile.ZipFile(some_source)
entry_info = z.getinfo(entry_name)
i = z.open(entry_name)
o = open(target_name, 'w')
offset = 0
while True:
b = i.read(block_size)
offset += len(b)
set_percentage(float(offset)/float(entry_info.file_size) * 100.)
if b == '':
break
o.write(b)
i.close()
o.close()
set_attributes_from(entry_info)
提取entry_name
到target_name
大部分操作也是通过此操作完成的,shutil.copyfileobj
但也没有回呼进度
ZipFile.extract
方法调用的源_extract_member
使用:
source = self.open(member, pwd=pwd)
target = file(targetpath, "wb")
shutil.copyfileobj(source, target)
source.close()
target.close()
如果成员不是ZipInfo对象,getinfo(member)
则该成员已从名称转换为ZipInfo对象
解决方法
我知道如何使用Python提取zip存档,但是我如何准确地以百分比显示提取进度?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。