Python标准库之zipfile和tarfile模块的使用

Python标准库之zipfile和tarfile模块的使用攻略

简介

压缩文件在网页和文件传输中是很常见的,很多时候我们需要用到Python对压缩文件的操作。Python标准库中提供了两个模块zipfile和tarfile,可以用来读取、写入、解压缩、压缩zip、tar和其他常见的压缩格式文件。

本篇攻略将介绍zipfile和tarfile模块的使用方法,包括它们的常用的方法和实际应用的示例。

zipfile模块

zipfile模块提供了一种在Python中管理zip文件(存档,或存档文件)的方式。它使用标准的zip文件格式。使用zipfile模块可以:

  • 向zip文件添加文件或文件夹
  • 从zip文件中提取文件或文件夹
  • 列出zip文件中的文件
  • 读取zip文件中的文件的内容
  • 在zip文件中删除文件或文件夹

ZipFile打开和关闭

打开压缩文件并返回ZipFile对象,可以使用以下语法:

import zipfile
with zipfile.ZipFile("example.zip", "r") as zip_file:
    # operations to do with zip file

zipfile.ZipFile 接收两个参数:

  • zipfile 必须指定待打开的压缩文件名或文件对象。
  • mode 是可选的字符串参数。它指定zip在打开文件时的模式。默认模式是"r",表示打开zip文件,以便读取其内容。

使用with语句来确保文件在使用完成后被关闭。

ZipFile增加和提取文件

要向zip文件中添加文件或文件夹,请使用 write() 方法。此方法接收文件名或目录名,注意:目录名是将添加目录下的所有文件。例如:

with zipfile.ZipFile("example.zip", "w") as zip_file:
    zip_file.write("file1.txt")
    zip_file.write("directory1")

在上面的代码示例中,使用了"example.zip"打开zip文件,然后使用 write() 方法,添加了一个 file1.txt 文件和一个名为 directory1 的文件夹。

要从zip文件中提取文件或文件夹,请使用 extract() 方法。此方法接受文件名或目录名作为参数。例如:

with zipfile.ZipFile("example.zip", "r") as zip_file:
    zip_file.extract("file1.txt")
    zip_file.extract("directory1")

在上面的代码示例中,使用"example.zip"打开zip文件,然后使用 extract() 方法,从zip文件中提取出了一个 file1.txt 文件和一个名为 directory1 的文件夹。

ZipFile列表

要列出zip文件中的所有文件,请使用 namelist() 方法。例如:

with zipfile.ZipFile("example.zip", "r") as zip_file:
    files_list = zip_file.namelist()
    print(files_list)

在上面的代码示例中,使用"example.zip"打开zip文件,使用 namelist() 方法获取压缩文件中的所有文件,然后打印出来。

ZipFile读取文件内容

要在zip文件中读取文件的内容,请使用 open() 方法。此方法接收文件名和模式作为参数。这里的模式与Python内置的"open()"方法中的模式相同。例如:

with zipfile.ZipFile("example.zip", "r") as zip_file:
    with zip_file.open("file1.txt", "r") as file:
        print(file.read().decode("utf-8"))

在上面的代码示例中,使用 "example.zip" 打开zip文件,使用 open() 方法读取文件1.txt中的内容,然后打印出来。

ZipFile删除文件

要从zip文件中删除文件,请使用 remove() 方法。此方法接收文件名作为参数。例如:

with zipfile.ZipFile("example.zip", "w") as zip_file:
    zip_file.write("file1.txt")
    zip_file.write("file2.txt")

with zipfile.ZipFile("example.zip", "a") as zip_file:
    zip_file.remove("file2.txt")

在上面的代码示例中,首先使用 "example.zip" 打开zip文件,使用 write() 方法添加了两个文件。然后,使用 remove() 方法,从zip文件中删除了一个文件。最后,使用 append 打开zip文件,并且删除的文件不再在zip文件中。

tarfile模块

tarfile模块提供了一种在Python中管理 tar存档文件的方式。它使用标准的tar文件格式。使用tarfile模块可以:

  • 创建tar文件
  • 向tar文件添加文件或文件夹
  • 从tar文件中提取文件或文件夹
  • 列出tar文件中的文件
  • 读取tar文件中的文件的内容
  • 在tar文件中删除文件或文件夹

tarfile打开和关闭

打开一个 tar 文件并返回一个 TarFile 对象的方法与 zipfile.ZipFile 相似,只是操作的文件类型不同。可以使用以下语法:

import tarfile
with tarfile.open("example.tar", "r") as tar_file:
    # operations to do with tar file

tarfile.open 接收两个参数:

  • tarfile 必须指定待打开的tar文件名或文件对象。
  • mode 是可选的字符串参数。它指定tar在打开文件时的模式。默认模式是 "r" ,它表示打开 tar 文件,以便读取其内容。

使用with语句来确保文件在使用完成后被关闭。

tarfile增加和提取文件

要将文件或文件夹添加到 tar 文件中,请使用 add() 方法:

with tarfile.open("example.tar", "w") as tar_file:
    tar_file.add("file1.txt")
    tar_file.add("directory1")

在上面的代码示例中,使用 "example.tar" 打开 tar 文件,然后使用 add() 方法,添加了一个 file1.txt 文件和一个名为 directory1 的文件夹。

要从 tar 文件中提取文件或文件夹,请使用 extract() 方法。

with tarfile.open("example.tar", "r") as tar_file:
    tar_file.extract("file1.txt")
    tar_file.extract("directory1")

在上面的代码示例中,使用 "example.tar" 打开 tar 文件,然后使用 extract() 方法,从 tar 文件中提取出了一个 file1.txt 文件和一个名为 directory1 的文件夹。

tarfile列表

要列出tar文件中的所有文件,请使用 getnames() 方法。例如:

with tarfile.open("example.tar", "r") as tar_file:
    files_list = tar_file.getnames()
    print(files_list)

在上面的代码示例中,使用 "example.tar" 打开tar文件,使用 getnames() 方法获取tar文件中的所有文件,然后打印出来。

tarfile读取文件内容

要在tar文件中读取文件的内容,请使用 extractfile() 方法。此方法接收文件名作为参数。例如:

with tarfile.open("example.tar", "r") as tar_file:
    with tar_file.extractfile("file1.txt") as file:
        print(file.read().decode("utf-8"))

在上面的代码示例中,使用 "example.tar" 打开tar文件,使用 extractfile() 方法读取文件1.txt中的内容,然后打印出来。

tarfile删除文件

要从tar文件中删除文件,请使用 remove() 方法。此方法接收文件名作为参数。例如:

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

with tarfile.open("example.tar", "a") as tar_file:
    tar_file.remove("file2.txt")

在上面的代码示例中,首先使用 "example.tar" 打开tar文件,使用 add() 方法添加了两个文件。然后,使用 remove() 方法,从tar文件中删除了一个文件。最后,使用 append 打开tar文件,并且删除的文件不再在tar文件中。

示例

示例一:将文件夹压缩成zip文件

下面是一个示例,将当前工作目录下的文件夹 test 压缩成 test.zip 文件:

import zipfile  
import os  

def zip_dir(dirname, zipfilename):  
    filelist = []  

    if os.path.isfile(dirname):  
        filelist.append(dirname)  
    else :  
        for root, dirs, files in os.walk(dirname):  
            for name in files:  
                filelist.append(os.path.join(root, name))  

    zf = zipfile.ZipFile(zipfilename, "w", zipfile.zlib.DEFLATED)  
    for tar in filelist:  
        arcname = tar[len(dirname):]  
        print arcname  
        zf.write(tar, arcname)  
    zf.close()  

zip_dir("test","test.zip") 

示例二:将文件夹压缩成tar文件

下面是一个示例,将当前工作目录下的文件夹 test 压缩成 test.tar文件:

import tarfile
import os

def make_tarfile(output_filename, source_dir):
    with tarfile.open(output_filename, "w:gz") as tar:
        tar.add(source_dir, arcname=os.path.basename(source_dir))

make_tarfile("test.tar", "test")

小结

以上介绍了zipfile和tarfile模块的使用方法,这两个模块都是Python标准库的一部分,所以不需要额外安装。在实际应用中,可以按需使用这些模块,处理压缩文件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python标准库之zipfile和tarfile模块的使用 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 使用豆瓣源来安装python中的第三方库方法

    使用豆瓣源安装Python第三方库是一种常见的方式,它可以加快Python第三方库的安装速度。下面是使用豆瓣源来安装python中的第三方库方法的完整攻略。 1.安装pip工具 要使用豆瓣源安装Python第三方库,必须首先安装pip工具。pip是Python的默认包管理器,它可以方便的帮助我们安装、卸载、升级Python包。 1.1 Windows平台 在…

    python 2023年5月14日
    00
  • python实现二维码扫码自动登录淘宝

    让我们来详细讲解如何利用Python实现二维码扫码自动登录淘宝的完整攻略。 1. 安装所需Python库 在使用Python实现二维码扫码自动登录淘宝之前,我们首先需要安装必要的Python库。具体安装方式如下: pip install pillow pip install qrcode pip install zxing pip install selen…

    python 2023年6月2日
    00
  • python 在屏幕上逐字显示一行字的实例

    下面是详细的Python逐字显示一行字的实例攻略: 1. 实现过程 Python可以实现逐字显示一行字,主要需要用到以下两个模块: time模块:用于控制每个字符之间的间隔时间。 sys模块:用于控制标准输出流,实现字符的逐个输出。 代码如下: import sys import time def print_text(text): for char in …

    python 2023年6月3日
    00
  • python中argparse模块及action=’store_true’详解

    下面就来详细讲解一下“python中argparse模块及action=’store_true’详解”。 argparse模块介绍 argparse是Python中内置的用于解析命令行选项和参数的模块,它可以让开发者轻松地编写易于使用和维护的命令行工具。argparse解析器允许程序定义它期望接收的命令行参数,并从sys.argv中解析出这些参数。argpa…

    python 2023年6月3日
    00
  • Python+Selenium自动化环境搭建与操作基础详解

    下面就来详细讲解“Python+Selenium自动化环境搭建与操作基础详解”的完整攻略: 环境搭建 安装Python 首先需要安装Python,建议使用Python3版本以上。可在官网下载安装包进行安装,也可通过命令行工具安装。 sudo apt-get install python3 安装浏览器驱动 由于Selenium是通过模拟浏览器操作实现自动化测试…

    python 2023年5月19日
    00
  • Python实现通过文件路径获取文件hash值的方法

    我来为你详细讲解一下“Python实现通过文件路径获取文件hash值的方法”的完整攻略。 什么是hash值? 在计算机科学中,hash值是一个由特定算法对消息或文件产生的固定长度的数据,通常为16进制的字符串。哈希值可以用于数据的验证、比较和检索等操作,常用于数据加密、密码学、文件比较等领域。 通过文件路径获取文件hash值的方法 Python提供了多种方式…

    python 2023年5月20日
    00
  • Python中的for循环详情

    Python中的for循环语句用于对一个序列(如列表、元组或字符串)进行遍历循环,可以方便地对序列中的每个元素进行操作和处理。 基本语法 for循环语句的基本语法如下: for 变量 in 序列: # 循环体 其中,变量指的是用于遍历序列中元素的变量名,可以任意命名;序列指的是需要遍历的列表、元组、字符串、字典等数据类型;循环体指的是需要执行的操作。 在循环…

    python 2023年5月13日
    00
  • python验证码识别的示例代码

    以下是关于 “Python验证码识别的示例代码” 的完整攻略。 1. 什么是验证码识别? 验证码识别是通过计算机程序对验证码图片进行分析,实现自动化识别的过程。通常情况下,验证码识别用于绕过需要人类参与的验证环节,实现自动化的脚本操作。一般来说,验证码识别需要经过以下几个步骤: 预处理,即对验证码图片进行降噪、二值化等处理,以去除噪点、消除干扰。 分割,即将…

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部