Python压缩文件夹为zip
在日常开发中,我们常常会需要对文件夹进行压缩,以便更方便地传输或存储。在Python中,我们可以使用zipfile
模块来压缩文件夹为zip格式。
实现方法
- 导入
zipfile
模块zipfile
模块是Python内置的用于压缩和解压缩zip文件的模块,我们需要导入该模块才能使用其功能。import zipfile
- 创建zip文件
在压缩文件夹前,我们需要先创建一个zip文件。可以使用
zipfile
模块中的ZipFile
类来创建一个zip文件对象,如下所示:with zipfile.ZipFile('new_archive.zip', 'w') as zipObj: # 压缩文件夹
其中,
new_archive.zip
是新建的zip文件名,w
表示以写入模式打开文件。 -
压缩文件夹
在创建zip文件后,我们可以使用
write()
方法来向该zip文件中添加需要压缩的文件或文件夹。在此处,我们需要向该zip文件中添加文件夹,我们可以通过递归的方式来将文件夹内的所有文件添加到zip文件中。import os # 压缩指定文件夹 def zipdir(path, ziph): # 循环遍历文件夹中的所有文件和子文件夹 for root, dirs, files in os.walk(path): for file in files: # 将每个文件添加到zip文件中 ziph.write(os.path.join(root, file)) # 将指定文件夹保存为zip文件 def zip_folder(folder_path, zip_path): with zipfile.ZipFile(zip_path, 'w') as zipObj: # 添加文件夹及其内容到zip文件中 zipdir(folder_path, zipObj)
在上述代码中,
zip_folder()
函数接收两个参数:folder_path
表示需要被压缩的文件夹路径;zip_path
表示新建的zip文件路径。在函数内部,我们首先使用os.walk()
函数来循环遍历该文件夹中的所有文件和子文件夹,然后使用write()
方法来将每个文件添加到zip文件中。注意:在上述代码中使用
with
关键字来打开zip文件,这样可以确保在文件操作完成后,文件对象会被自动清理并关闭。 -
测试程序
使用如下代码来测试上述程序:
if __name__ == '__main__': # 将'test_folder'文件夹压缩为'test_folder.zip'文件 zip_folder('test_folder', 'test_folder.zip')
在运行程序后,将在当前目录下生成一个
test_folder.zip
文件。
完整代码
下面是上述程序的完整代码:
import zipfile
import os
# 压缩指定文件夹
def zipdir(path, ziph):
# 循环遍历文件夹中的所有文件和子文件夹
for root, dirs, files in os.walk(path):
for file in files:
# 将每个文件添加到zip文件中
ziph.write(os.path.join(root, file))
# 将指定文件夹保存为zip文件
def zip_folder(folder_path, zip_path):
with zipfile.ZipFile(zip_path, 'w') as zipObj:
# 添加文件夹及其内容到zip文件中
zipdir(folder_path, zipObj)
if __name__ == '__main__':
# 将'test_folder'文件夹压缩为'test_folder.zip'文件
zip_folder('test_folder', 'test_folder.zip')
结论
使用Python创建zip文件可以帮助我们更方便地压缩和存储文件夹,尤其适用于需要对大量数据进行处理和传输的场景。本文中所介绍的方法可以很容易地扩展到压缩其他类型的文件,并且也支持对压缩文件的解压操作。希望这篇文章对你有所帮助!