【015】对文件进行压缩_#py

对文件进行压缩

  • [1. 下载7z软件](#1. 下载7z软件)
  • [2. 调用exe文件](#2. 调用exe文件)
  • [3. 压缩和分卷压缩](#3. 压缩和分卷压缩)
  • [4. 完整代码](#4. 完整代码)

1. 下载7z软件

从官网下载https://www.7-zip.org/软件。

2. 调用exe文件

主要是通过 subprocess 调用对应的command的命令。

python 复制代码
subprocess.run(command, check=True)

其中 command 的应包含7z软件的exe文件地址以及文件大小,文件压缩前后的名字及地址。

3. 压缩和分卷压缩

其中command的示例如下

python 复制代码
command = [
    seven_zip_path,
    'a',
    '-tzip',
    f'-v{volume_size}b',  # 注意这里是以字节为单位
    output_zip + '/output.zip',
    source_dir + '\\*'  # 源目录及其内容   排除目录本身
]

第一个元素:

seven_zip_path:这是7-Zip可执行文件7z.exe的路径。如果7z.exe在系统的PATH环境变量中,你可以直接使用'7z'。否则,你需要提供7z.exe的完整路径。

第二个元素:

'a':这是7-Zip的命令行选项,用于添加文件到压缩档案。

与第二个元素相接的两个元素都是和 "a" 相互使用。

  1. -t{Type}:设置压缩文件的类型(zip、tar、gzip、bzip2等)。例如,-tzip 表示创建ZIP格式的压缩文件,-t7z 表示创建7z格式的压缩文件。
  2. -m{Parameters}:设置压缩方法和参数。例如,-mx=9 表示使用最高级别的压缩。
  3. -p{Password}:设置压缩文件的密码。
  4. -r:递归子目录,即包括所有子目录中的文件。
  5. -v{Size}:设置分卷的大小。例如,-v10m 表示每个分卷的大小为10MB。
  6. -x[r[-|0]]{@listfile|!wildcard}:排除文件或目录。
  7. -i[r[-|0]]{@listfile|!wildcard}:包括文件或目录。
  8. -sdel:压缩后删除原文件,相当于剪切操作。

第五个元素:

output_zip + '/output.zip'

表示压缩档案的输出路径和文件名。这可以是一个包含路径的完整文件名。
本示例用了-v{Size},因此在压缩过程中,总文件大小超过Size时,就会调用分卷压缩,则会在文件后面加个001,002等标识。

第六个元素

source_dir + '\\*'

这是要压缩的文件的路径。可以是单个文件或文件夹。

source_dir = "C:/"

  1. 若是只有 source_dir,则会压缩这个文件夹及文件夹以内的文件内容。
  2. 若是包含了'\\*',则会只压缩文件夹以内的内容,但不会压缩文件夹本身。

文件大小标识

python 复制代码
volume_size_mb = 100     # 这个表示压缩后的文件大小,以MB为单位。
volume_size = volume_size_mb * 1024 * 1024

4. 完整代码

python 复制代码
	source_directory = r'.\dist'  # 需要压缩的文件地址
    output_zip_filename = r'.\upload'    # 压缩后文件存放地址
    volume_size_mb = 100  # 每个分卷的大小为10MB
    seven_zip_path = r'C:\Program Files\7-Zip\7z.exe'  # 7-Zip的完整路径
    volume_size = volume_size_mb * 1024 * 1024		# 转义文件大小
    command = [
        seven_zip_path,
        'a',		# 压缩
        '-tzip',		# 压缩文件格式
        f'-v{volume_size}b',  # 注意这里是以字节为单位
        output_zip + '/output.zip',
        source_dir + '\\*'  # 源目录及其内容   排除目录本身
    ]
    subprocess.run(command, check=True)		# 调用命令行
相关推荐
得一录8 小时前
Python 算法高级篇:布谷鸟哈希算法与分布式哈希表
python·算法·aigc·哈希算法
Faker66363aaa8 小时前
基于Cascade-Mask-RCNN和RegNetX-4GF的果蝇检测与识别系统——COCO数据集训练与优化
python
聂 可 以8 小时前
解决Pycharm中(Python)软件包下载速度很慢、甚至下载失败的问题
ide·python·pycharm
七夜zippoe8 小时前
强化学习实战指南:从Q-Learning到PPO的工业级应用
python·openai·超参数调优·q-learning·mdp
JaydenAI9 小时前
[拆解LangChain执行引擎]非常规Pending Write的持久化
python·langchain
MoonPointer-Byte9 小时前
【Python实战】我开发了一款“诗意”待办软件:MoonTask(附源码+工程化思路)
开发语言·python·custom tkinter
~央千澈~9 小时前
抖音弹幕游戏开发之第11集:礼物触发功能·优雅草云桧·卓伊凡
java·前端·python
程序员徐师兄9 小时前
Python 基于深度学习的电影评论可视化系统
python·深度学习·深度学习的电影评论可视化系统·深度学习评论情感分析
喵手9 小时前
Python爬虫实战:容错的艺术 - 基于错误分级的自适应重试与退避机制实战
爬虫·python·爬虫实战·容错·零基础python爬虫教学·错误分级·退避机制
程序员徐师兄9 小时前
基于 Python 深度学习的电影评论情感分析算法
python·深度学习·算法·电影情感分析算法·评论情感分析