python - 如何使用 python 减小文件的大小?
问题描述
我想将一个相当大的文件(大约 350mb)的大小减小到一个小得多的文件,例如(60mb),我需要减小一个文本文件的大小,任何减小文件大小的方法都可以,程序必须是可逆...请帮助我
解决方案
这段代码可能会帮助你..
import tarfile
from tqdm import tqdm
压缩
def compress(tar_file, members):
"""
Adds files (`members`) to a tar_file and compress it
"""
# open file for gzip compressed writing
tar = tarfile.open(tar_file, mode="w:gz")
# with progress bar
# set the progress bar
progress = tqdm(members)
for member in progress:
# add file/folder/link to the tar file (compress)
tar.add(member)
# set the progress description of the progress bar
progress.set_description(f"Compressing {member}")
# close the file
tar.close()
解压
def decompress(tar_file, path, members=None):
"""
Extracts `tar_file` and puts the `members` to `path`.
If members is None, all members on `tar_file` will be extracted.
"""
tar = tarfile.open(tar_file, mode="r:gz")
if members is None:
members = tar.getmembers()
# with progress bar
# set the progress bar
progress = tqdm(members)
for member in progress:
tar.extract(member, path=path)
# set the progress description of the progress bar
progress.set_description(f"Extracting {member.name}")
# or use this
# tar.extractall(members=members, path=path)
# close the file
tar.close()
推荐阅读
- phoenix - Live View 应用程序在全新安装后不断重新加载
- rust - 如何转换选项中的内部值?
- react-native - 如何在 React Native 中更改 TextInput 光标位置?
- javascript - 从 router.js 异步调用 vuex 操作有多好?
- css - 按钮上的 chrome 中的粘滞悬停状态
- r - 带有 by 的 unique.data.table 的行为是否类似于带有 .keep_all = TRUE 的 dplyr::distinct?
- android - Android Studio Preview 4.1 Canary 10 中的构建错误
- webpack - regeneratorRuntime 未定义 Gulp + Webpack + Babel
- javascript - 带有外部指纹扫描仪的 React-Native 生物识别(secugen,futronics)
- apache-kafka - 即使REST程序具有INT,Kafka也会将消息密钥生成为STRING?