Python 2.x 中如何使用zipfile模块创建和解压ZIP文件

Python 2.x 中如何使用 zipfile 模块创建和解压 ZIP 文件

介绍

在 Python 中使用 zipfile 模块可以对 ZIP 文件进行创建和解压操作。ZIP 文件是一种常见的压缩文件格式,它可以把多个文件打包成一个文件,便于传输和存储。它在 Web 开发、数据库管理等领域被广泛使用。

创建 ZIP 文件

使用 zipfile 模块可以方便地创建 ZIP 文件。下面是一个简单的例子,将两个文件压缩成一个 ZIP 文件:

import zipfile

# 创建 ZIP 文件

with zipfile.ZipFile('example.zip', 'w') as myzip:

myzip.write('file1.txt')

myzip.write('file2.txt')

在上面的代码中,使用 with 语句打开 ZIP 文件 example.zip 并赋值给 myzip,然后使用 write() 方法将 file1.txt 和 file2.txt 这两个文件写入 ZIP 文件中。

如果需要将一个目录下的所有文件打包成 ZIP 文件,可以使用 os.walk() 函数遍历目录,然后使用 write() 方法将每个文件写入 ZIP 文件中。

下面的例子实现了将目录 walker 下的所有文件打包成一个 ZIP 文件:

import os

import zipfile

# 打包目录 walker 下的文件

dir_name = 'walker'

file_names = []

# 遍历 walker 目录,获取所有文件的文件名

for root, dirs, files in os.walk(dir_name):

for file in files:

file_names.append(os.path.join(root, file))

# 创建 ZIP 文件,并将所有文件写入 ZIP 文件中

with zipfile.ZipFile('walker.zip', 'w') as myzip:

for file in file_names:

myzip.write(file)

在上面的代码中,使用 os.walk() 函数遍历 walker 目录并获取里面的所有文件名。然后使用 with 语句创建 ZIP 文件 walker.zip 并赋值给变量 myzip,使用 write() 方法将所有文件写入 ZIP 文件中。

解压 ZIP 文件

使用 zipfile 模块可以方便地解压 ZIP 文件。下面是一个简单的例子,将 ZIP 文件 example.zip 解压到当前目录下:

import zipfile

# 解压 ZIP 文件

with zipfile.ZipFile('example.zip', 'r') as myzip:

myzip.extractall()

在上面的代码中,使用 with 语句打开 ZIP 文件 example.zip 并赋值给 myzip,然后使用 extractall() 方法将 ZIP 文件解压到当前目录下。

如果需要将 ZIP 文件解压到指定的目录下,可以使用 extractall(path) 方法,将目录路径传递给该方法。

下面的例子实现了将 ZIP 文件 walker.zip 解压到目录 walker 中:

import zipfile

# 解压 ZIP 文件到指定目录

with zipfile.ZipFile('walker.zip', 'r') as myzip:

myzip.extractall('walker')

在上面的代码中,使用 with 语句打开 ZIP 文件 walker.zip 并赋值给 myzip,然后使用 extractall('walker') 方法将 ZIP 文件解压到目录 walker 中。

总结

在 Python 中使用 zipfile 模块可以方便地进行 ZIP 文件的创建和解压操作。创建 ZIP 文件可以使用 with 语句打开 ZIP 文件并使用 write() 方法将文件写入 ZIP 文件中,也可以遍历目录使用 write() 方法将每个文件写入 ZIP 文件中。解压 ZIP 文件可以使用 with 语句打开 ZIP 文件并使用 extractall() 方法将 ZIP 文件解压到指定目录中。

值得注意的是,在 Python 2.x 版本中,如果文件名中含有非 ASCII 字符,需要在文件名前面添加 "u" 将其转换为 Unicode 格式,否则在创建 ZIP 文件时会报错。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签