讲师中心 微信公众号
AI工具推荐 视频效率加速

Python中如何压缩文件?

大晨酱_8924

大晨酱_8924

发布时间:2025-05-17 16:15:02

|

1052人浏览过

|

来源于php中文网

原创

在python中压缩文件主要使用zipfile和tarfile模块。1. 使用zipfile模块可以压缩单个文件或整个目录,示例代码为:with zipfile.zipfile('example.zip', 'w') as zipf: zipf.write('file1.txt')。2. 对于目录压缩,使用os.walk遍历目录并添加文件到zip文件中。3. 设置密码压缩可使用pyzipper库,示例为:with pyzipper.aeszipfile('encrypted.zip', 'w', compression=pyzipper.zip_deflated, encryption=pyzipper.wz_aes) as zf: zf.setpassword(b'my_password')。4. tarfile模块用于创建tar文件,示例为:with tarfile.open('example.tar', 'w') as tar: tar.add('file1.txt')。5. 压缩tar文件时可使用gzip模块,示例为:with tarfile.open('example.tar.gz', 'w:gz') as tar: tar.add('file1.txt')。选择压缩格式和方法需根据具体需求,zip适合跨平台,tar适用于unix系统。

Python中如何压缩文件?

压缩文件在Python中是个很常见的需求,尤其是在处理大量数据或需要传输文件时。今天我们就来聊聊如何在Python中高效地压缩文件,以及一些相关的经验和技巧。

在Python中压缩文件主要有几种方法,其中最常用的就是使用zipfile和tarfile模块。zipfile模块用于创建和读取ZIP格式的压缩文件,而tarfile模块则用于处理TAR格式的压缩文件。让我们从最基本的ZIP压缩开始吧。

使用zipfile模块压缩文件非常简单,下面是一个简单的示例:

立即学习“Python免费学习笔记(深入)”;

import zipfile

# 创建一个ZIP文件
with zipfile.ZipFile('example.zip', 'w') as zipf:
    zipf.write('file1.txt')
    zipf.write('file2.txt')

这个代码会将file1.txt和file2.txt压缩到example.zip中。简单明了,对吧?不过,在实际应用中,你可能会遇到一些问题,比如如何压缩整个目录,或者如何在压缩时设置密码。

对于整个目录的压缩,你可以使用os模块来遍历目录,然后逐个文件添加到ZIP文件中:

import os
import zipfile

def zip_directory(folder_path, zip_path):
    with zipfile.ZipFile(zip_path, 'w') as zipf:
        for root, dirs, files in os.walk(folder_path):
            for file in files:
                file_path = os.path.join(root, file)
                zipf.write(file_path, os.path.relpath(file_path, folder_path))

zip_directory('my_directory', 'my_directory.zip')

这个方法会递归地遍历my_directory目录,将所有文件压缩到my_directory.zip中。不过,需要注意的是,这个方法会将目录结构保留在ZIP文件中,如果你不需要保留目录结构,可以在zipf.write时使用arcname参数来指定文件在ZIP中的路径。

如果你需要在压缩时设置密码,可以使用第三方库pyzipper,它是zipfile的一个扩展,支持AES加密:

import pyzipper

with pyzipper.AESZipFile('encrypted.zip', 'w', compression=pyzipper.ZIP_DEFLATED, encryption=pyzipper.WZ_AES) as zf:
    zf.setpassword(b'my_password')
    zf.write('file_to_encrypt.txt')

使用pyzipper可以很方便地给ZIP文件设置密码,但需要注意的是,AES加密会增加压缩和解压的时间。

Python Testing
Python Testing

Python 测试速查:运行 pytest、使用 mock/patch、参数化、fixtures、异步、覆盖率测试。

下载

除了ZIP格式,TAR格式也是常用的压缩格式,特别是在Unix系统上。使用tarfile模块可以很容易地创建TAR文件:

import tarfile

with tarfile.open('example.tar', 'w') as tar:
    tar.add('file1.txt')
    tar.add('file2.txt')

如果你需要同时压缩和压缩文件,可以使用gzip模块来压缩TAR文件:

import tarfile
import gzip

with tarfile.open('example.tar.gz', 'w:gz') as tar:
    tar.add('file1.txt')
    tar.add('file2.txt')

这个方法会创建一个压缩过的TAR文件,文件后缀为.tar.gz。不过,需要注意的是,gzip压缩的速度较慢,但压缩率较高,适合需要高压缩率的场景。

在实际应用中,选择压缩格式和方法需要根据具体需求来决定。如果你需要在不同操作系统之间传输文件,ZIP格式是个不错的选择,因为它在各个平台上都支持得很好。如果你主要在Unix系统上工作,TAR格式可能更适合你。

最后,分享一些我在使用Python压缩文件时踩过的一些坑:

  1. 文件路径问题:在压缩文件时,确保文件路径是正确的,特别是在使用os.walk遍历目录时,避免将绝对路径添加到ZIP文件中,这会导致解压时文件路径出错。

  2. 压缩速度和压缩率:在选择压缩方法时,需要权衡压缩速度和压缩率。zipfile模块的默认压缩级别是6,如果你需要更高的压缩率,可以手动设置压缩级别,但这会增加压缩时间。

  3. 内存使用:在压缩大型文件时,需要注意内存使用,特别是在使用tarfile模块时,它会将整个文件读入内存再压缩。如果内存不足,可以考虑使用tarfile的stream模式,或者分批压缩文件。

希望这些经验和技巧能帮你在Python中更高效地压缩文件。记住,实践出真知,多尝试不同的方法和工具,才能找到最适合你的解决方案。

热门AI工具

更多
AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

相关专题

更多
unix和linux的区别
unix和linux的区别

unix和linux的区别包括发展历史、开源性、发行版本、内核、文件系统、应用程序兼容性和用户界面等。本专题为大家提供unix和linux相关的文章、下载、课程内容,供大家免费下载体验。

2333

2023.09.22

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

60

2026.09.23

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

20

2026.09.23

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

20

2026.09.23

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

20

2026.09.22

Conan二进制包配置指南
Conan二进制包配置指南

本专题介绍Conan根据操作系统、编译器、架构和构建类型生成二进制包的方法,讲解Profile、Settings、Options及Package ID的作用,帮助管理不同平台和编译环境下的包版本。

20

2026.09.22

Conan私有仓库搭建教程
Conan私有仓库搭建教程

本专题系统的讲解Conan私有仓库的搭建流程,涵盖仓库服务部署、存储目录配置、用户认证、权限划分和远程地址添加,并介绍内部C++依赖包的上传、下载及版本维护方法。

20

2026.09.22

loomy官网入口地址合集
loomy官网入口地址合集

本专题汇总了 Loomy 桌面 AI 助理的官方入口地址合集及使用指南。提供 macOS 与 Windows 客户端下载 。Loomy 是讯飞推出的桌面级 AI 工作搭子,支持文件整理、数据分析、网页操作及通过飞书/钉钉远程操控电脑,助你高效完成本地办公任务 。

20

2026.09.22

NumPy常见函数使用方法
NumPy常见函数使用方法

本专题整理 NumPy 常见函数使用方法相关教程,覆盖函数大全、参数用法、数组运算、统计聚合、排序处理、where 条件筛选、linspace 创建数列等常用场景,帮助读者快速掌握 NumPy 函数调用思路和实际数据处理技巧。

40

2026.09.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn