有一个约 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 个文件)。
如果反过来插入,会导致压缩包被重复解压 ${文件数量} 次。
1
by73 2019-10-25 23:05:51 +08:00
照着你的代码合并了一次,没有任何问题啊 https://pastebin.com/rJRhQcnn
|