Python 带有示例的 ZIP 文件

⚡ 智能摘要

Python 使用内置的 shutil 和 zipfile 模块创建 ZIP 压缩文件。在这里,您将学习如何使用 make_archive() 压缩整个目录,使用 ZipFile 压缩特定文件,以及其他示例。tract、列出并读取存档内容。

  • 🗜️ make_archive(): shutil.make_archive() 将整个目录压缩成 .zip 文件。
  • 📄 ZipFile.write(): ZipFile.write() 将指定文件逐个添加到压缩包中。
  • 📂 extrac高的(): ZipFile.extractall() 将压缩包中的每个文件解压到一个文件夹中。
  • 📋 名称列表(): ZipFile.namelist() 列出 ZIP 压缩包内的文件名。
  • 🤖 人工智能帮助: Copilot 等 AI 工具可以立即生成压缩和解压缩代码。

Python ZIP文件

Python 允许您快速创建 zip/tar 档案。

以下命令将压缩整个目录

shutil.make_archive(output_filename, 'zip', dir_name)

以下命令可让你控制要存档的文件

ZipFile.write(filename)

如何将整个目录压缩成 ZIP 文件 Python

以下是创建 Zip 文件的步骤 Python

步骤1) 从以下位置创建存档文件 Python,请确保导入语句正确且有序。以下是存档的导入语句 from shutil import make_archive

Python ZIP文件

Code 说明

  • 从模块shutil导入make_archive类
  • 使用split函数从路径中分离出目录和文件名到文本文件的位置(guru99)
  • 然后我们调用模块“shutil.make_archive(“guru99 archive, “zip”, root_dir)”来创建存档文件,该文件将为 zip 格式
  • 然后我们传入要压缩的内容的根目录。因此目录中的所有内容都将被压缩
  • 运行代码时,您可以看到在面板右侧创建了存档 zip 文件。

步骤2) 创建存档文件后,您可以右键单击该文件并选择操作系统,它将显示您的存档文件,如下所示

Python ZIP文件

现在您的 archive.zip 文件将出现在您的操作系统上(Windows 资源管理器)

Python ZIP文件

步骤3) 双击该文件时,您将看到其中的所有文件的列表。

Python ZIP文件

如何使用 ZipFile 压缩特定文件

步骤4) In Python 我们可以对存档进行更多控制,因为我们可以定义要包含在存档下的特定文件。在我们的例子中,我们将在存档下包含两个文件 “guru99.txt”“guru99.txt.bak”。

Python ZIP文件

Code 说明

  • 从 zip 文件导入 Zipfile 类 Python 模块。此模块可完全控制创建 zip 文件
  • 我们创建一个名为(“testguru99.zip,”w”)的新 Zipfile
  • 创建一个新的 Zipfile 类,由于是文件,所以需要传入权限,所以需要将信息写入到文件中,如 newzip
  • 我们使用变量“newzip”来引用我们创建的 zip 文件
  • 使用“newzip”变量上的写入函数,我们将文件“guru99.txt”和“guru99.txt.bak”添加到档案中

执行代码时,您可以看到在面板右侧创建了名为“guru99.zip”的文件

注意::这里我们没有给出任何命令来“关闭”文件,如“newzip.close”,因为我们使用“With”范围锁,所以当程序超出这个范围时,文件将被清理并自动关闭。

步骤5) 当你 -> 右键单击​​文件 (testguru99.zip) 并 -> 选择您的操作系统 (Windows 资源管理器),它将显示文件夹中的存档文件,如下所示。

Python ZIP文件

双击文件“testguru99.zip”时,它将打开另一个窗口,并显示其中包含的文件。

Python ZIP文件

完成: Python Code 创建 ZIP 文件

以下是完整的代码

Python 2示例

import os
import shutil
from zipfile import ZipFile
from os import path
from shutil import make_archive

def main():
# Check if file exists
	if path.exists("guru99.txt"):
# get the path to the file in the current directory
	src = path.realpath("guru99.txt");
# rename the original file
	os.rename("career.guru99.txt","guru99.txt")
# now put things into a ZIP archive
	root_dir,tail = path.split(src)
    shutil.make_archive("guru99 archive", "zip", root_dir)
# more fine-grained control over ZIP files
	with ZipFile("testguru99.zip","w") as newzip:
	newzip.write("guru99.txt")
	    newzip.write("guru99.txt.bak")
if __name__== "__main__":
	  main()

Python 3示例

import os
import shutil
from zipfile import ZipFile
from os import path
from shutil import make_archive

    # Check if file exists
       if path.exists("guru99.txt"):
    # get the path to the file in the current directory
        src = path.realpath("guru99.txt");
    # rename the original file
        os.rename("career.guru99.txt","guru99.txt")
    # now put things into a ZIP archive
        root_dir,tail = path.split(src)
        shutil.make_archive("guru99 archive","zip",root_dir)
    # more fine-grained control over ZIP files
        with ZipFile("testguru99.zip", "w") as newzip:
            newzip.write("guru99.txt")
            newzip.write("guru99.txt.bak")

如何退出tract(解压缩)ZIP 文件 Python

要解压缩文件,请使用 ZipFile 以读取模式打开它,然后调用 ex 函数。tractall() 到 extract 每个文件,或 extract() 用于提取单个成员。

from zipfile import ZipFile

with ZipFile("testguru99.zip", "r") as myzip:
    myzip.extractall("extracted_files")

前tractall() 方法会将所有归档文件写入您作为参数传递的文件夹中。

如何列出 ZIP 文件中的文件 Archive

您可以无需打开文件即可查看存档。trac执行此操作。namelist() 方法返回 ZIP 文件中存储的每个文件的名称。

from zipfile import ZipFile

with ZipFile("testguru99.zip", "r") as myzip:
    print(myzip.namelist())

此命令会打印出存档中包含的文件名称列表。

如何读取 ZIP 文件中的文件 Archive

您可以直接从压缩包中读取成员文件,无需解压缩。ping 使用 ZipFile 的 open() 方法将其保存到磁盘。

from zipfile import ZipFile

with ZipFile("testguru99.zip", "r") as myzip:
    with myzip.open("guru99.txt") as f:
        print(f.read())

当您只需要大型压缩包中一个文件的内容时,这非常有用。

常见问题

使用 shutil.make_archive(name, 'zip', root_dir) 压缩目录,或者以写入模式打开 ZipFile 并调用 write() 将特定文件添加到归档中。

shutil.make_archive() 一次性压缩整个目录,而 zipfile.ZipFile 提供更精细的控制,允许您添加、读取或删除文件。trac存档中的单个文件。

使用 ZipFile('file.zip', 'r') 打开压缩文件并调用 extractall('folder') 到 extrac并非一切,或例如trac使用 t('name') 从归档文件中提取单个文件。

以读取模式打开 Zip 文件并调用 namelist() 函数,该函数返回一个列表,其中包含压缩文件中存储的所有文件名(不含扩展名)。trac和他们中的任何一个。

with 语句会在代码块结束时自动关闭归档文件,即使发生错误也是如此,因此您无需手动调用 close()。

GitHub Copilot 等 AI 助手可以自动补全 ZipFile 和 make_archive() 调用,并根据纯语言描述生成压缩或解压缩多个文件的循环。

是的。人工智能工具可以自动编写备份和归档脚本,在 shutil 和 zipfile 之间进行选择,并添加针对文件丢失或归档文件损坏的错误处理。

是的。打开 ZipFile,然后使用其 open() 方法读取成员文件的内容,无需额外操作。trac将整个存档写入磁盘。

总结一下这篇文章: