有一个约 19GB 的 tar.gz 零散文件包需要解压(解压后约 80G ),由于是有人值守,所以迫切需要一个进度条。
tarfile 代码:
import tarfile
filepath ="/data/someWhere/2019"
list = '(tarfile.open("/data/someWhere/2019.gz").getnames())' # list
for n in list:
tar.extract(n. filepath)
tar.close()
progress2 代码:
import progress
size=len(list) # int, e.g.127
with progressbar.ProgressBar(
widgets=[progressbar.SimpleProgress()],
max_value=(size)) as bar:
for i in range(size):
bar.update(i+1)
bar.finish()
尝试了把 progress2 的方法插入到 tarfile 的 for 循环当中,由于是用的 extract
而不是 extractall
,导致进度条完全没有效果,全部解压完毕后会从 0 直接到 100%(包内有 127 个文件)。
如果反过来插入,会导致压缩包被重复解压 ${文件数量} 次。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.