当前位置: 首页 > article >正文

Python知识点:如何使用Python进行文件压缩与解压缩

在Python中,可以使用内置的zipfiletarfile模块来进行文件的压缩与解压缩。下面是如何使用这两个模块进行操作的基本示例:

1. 使用 zipfile 模块

zipfile 模块可以用于处理ZIP文件格式的压缩与解压缩。

压缩文件
import zipfile

# 压缩文件
def compress_files(zip_filename, *file_names):
    with zipfile.ZipFile(zip_filename, 'w') as zipf:
        for file in file_names:
            zipf.write(file)

# 示例
compress_files('archive.zip', 'file1.txt', 'file2.txt')
解压缩文件
import zipfile

# 解压缩文件
def decompress_files(zip_filename, extract_to_folder):
    with zipfile.ZipFile(zip_filename, 'r') as zipf:
        zipf.extractall(extract_to_folder)

# 示例
decompress_files('archive.zip', 'extracted_folder')

2. 使用 tarfile 模块

tarfile 模块可以用于处理TAR文件及其衍生格式(如GZ、BZ2、XZ)的压缩与解压缩。

压缩文件
import tarfile

# 压缩文件
def compress_files(tar_filename, *file_names):
    with tarfile.open(tar_filename, 'w') as tarf:
        for file in file_names:
            tarf.add(file)

# 示例
compress_files('archive.tar', 'file1.txt', 'file2.txt')
解压缩文件
import tarfile

# 解压缩文件
def decompress_files(tar_filename, extract_to_folder):
    with tarfile.open(tar_filename, 'r') as tarf:
        tarf.extractall(path=extract_to_folder)

# 示例
decompress_files('archive.tar', 'extracted_folder')

3. 压缩与解压缩 GZ/BZ2/XZ 格式

使用tarfile模块也可以处理这些压缩格式,只需指定模式(例如'w:gz'表示Gzip压缩):

Gzip 压缩
import tarfile

# 压缩为Gzip格式
def compress_files_gz(tar_filename, *file_names):
    with tarfile.open(tar_filename, 'w:gz') as tarf:
        for file in file_names:
            tarf.add(file)

# 示例
compress_files_gz('archive.tar.gz', 'file1.txt', 'file2.txt')
解压缩 Gzip 格式
import tarfile

# 解压缩Gzip格式
def decompress_files_gz(tar_filename, extract_to_folder):
    with tarfile.open(tar_filename, 'r:gz') as tarf:
        tarf.extractall(path=extract_to_folder)

# 示例
decompress_files_gz('archive.tar.gz', 'extracted_folder')

总结

  • zipfile 用于处理 .zip 文件。
  • tarfile 用于处理 .tar.tar.gz.tar.bz2.tar.xz 文件。

根据你的需要选择合适的模块和方法来进行文件的压缩与解压缩。


http://www.kler.cn/a/301365.html

相关文章:

  • 学习大数据DAY61 宽表加工
  • Python 人脸检测:使用 Dlib 和 OpenCV
  • 两大新兴开发语言大比拼:Move PK Rust
  • 通过 Docker 对 MySQL 做主从复制的时候,因为ip不对导致不能同步。后又因为二进制的偏移量写的不对,导致不能同步的问题
  • Spark分布式计算中Shuffle Read 和 Shuffle Write的职责和区别
  • Python 网络爬虫入门教程
  • 证书学习(四)X.509数字证书整理
  • springcloud-GateWay
  • 大语言模型:AI 时代的文字计算器?
  • Vue2和Vue3子组件向父组件传值
  • INIC6081量产工具下载,initio6081开卡软件分享
  • 前端自定义下载文件名
  • 第一篇 第3章 不确定型分析 第4章 设备更新分析 第5章价值工程
  • 基于SpringBoot+Vue的超市外卖管理系统
  • vue3使用provide和inject传递异步请求数据子组件接收不到
  • 大文件切片上传-vue3.0
  • 如何在VUE3中使用函数式组件
  • ecmascript和javascript的区别?
  • 从底层原理上理解ClickHouse 中的稀疏索引
  • 相互作用先验下的 3D 分子生成扩散模型 - IPDiff 评测
  • Hbase的简单使用示例
  • 在 RT-Thread 上使用单色屏 UI 库 - U8G2
  • 【Shiro】Shiro 的学习教程(四)之 SpringBoot 集成 Shiro 原理
  • 海外云手机是否适合运营TikTok?
  • Kubernetes部署(haproxy+keepalived)高可用环境和办公网络打通
  • Java 21的Preferences API的笔记