python - 如何知道文件是否被压缩
问题描述
从一组文件中,我正在创建一个 tar 文件,并从 tar 文件中创建一个 tar.gz 文件(使用 python)。
压缩文件的创建可能需要一些时间,因此:
我想知道是否有办法知道“创建压缩文件的过程”是“正在进行的”。
也许通过一些临时文件或类似文件进行检查?
谢谢
解决方案
您可以使用 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
并在正在写入/要写入的文件上使用进度条(知道如果文件的大小非常不同,这将不准确)
推荐阅读
- vue.js - v-date-picker 未在所需月份打开
- c# - 不能将不可为空的对象作为接受 nullalble 的参数传递
- javascript - navigator.serviceWorker.controller.postMessage 为空,但仅在第一页加载时
- c++ - C++ 的 Web 程序集接口类型绑定?
- python - 有时找不到元素
- shell - 需要帮助根据文件夹名称对文件夹进行排序(排序音乐)
- php - 如何在 Jquery 中使用 ajax Php post 方法?
- javascript - 如何根据数组的名称和长度制作动态表单?
- istio - Istio 添加和删除标头,但不会覆盖
- reactjs - 使用 Context Api Hooks 进行异步/等待 - React