首页 > 解决方案 > 如何知道文件是否被压缩

问题描述

从一组文件中,我正在创建一个 tar 文件,并从 tar 文件中创建一个 tar.gz 文件(使用 python)。

压缩文件的创建可能需要一些时间,因此:

我想知道是否有办法知道“创建压缩文件的过程”是“正在进行的”。

也许通过一些临时文件或类似文件进行检查?

谢谢

标签: pythoncompressiontargzip

解决方案


您可以使用 python 创建gzip文件(可能在另一个线程中),这样您就可以知道文件的创建时间(甚至获得进度指示器)

写入块和进度报告,因为每次将文件的块写入压缩输出时都可以控制(那里有更漂亮的进度条,我会做一个简单的打印):

import gzip,shutil,os

input_file = "input.tar"
input_size = os.path.getsize(input_file)
chunk_size = 100000
written = 0

with open(input_file,"rb") as fr,gzip.open(input_file+".gz","wb") as fw:
    chunk = fr.read(chunk_size)
    fw.write(chunk)
    written += chunk.size()
    print("Progress {} bytes out of {}".format(written,input_size))

另一种解决方案是使用库的 gzip 输出模式tarfile并在正在写入/要写入的文件上使用进度条(知道如果文件的大小非常不同,这将不准确)


推荐阅读