Python zipfile – Python ZIP
时间:2020-02-23 14:43:42 来源:igfitidea点击:
Python zipfile模块可帮助我们处理zip文件。
今天,我们将学习如何读取zip存档详细信息,如何使用zipfile模块创建和提取zip文件。
如果您不知道,Python中有一个内置的zip()函数。
您可以在AppDividend Python zip()教程中阅读有关它的全部信息。
Python zipfile
Python的zipfile模块对于甚至生产级应用程序也很重要。
这是由于以下原因:在服务器上,通常将通过Web应用程序上传的文件压缩后保存,以节省昂贵的服务器空间。
让我们开始使用zipfile模块示例。
这个python模块也类似于python tarfile模块。
请注意,出于演示目的,我们有一个名为" Archive.zip"的ZIP文件,其中包含一些文本文件,并且该ZIP文件位于运行程序的目录中。
读取一个ZIP文件
我们将从列出ZIP存档内的文件开始。
这是一个示例程序:
import zipfile zip_archive = zipfile.ZipFile("Archive.zip", "r") # list file information for file_info in zip_archive.infolist(): print(file_info.filename, file_info.date_time, file_info.file_size)
我们能够列出存档中存在的文件以及文件的一些元数据。
请注意,该过程确实非常快,因为我们无需在读取文件之前就将其解压缩。
创建一个ZIP文件
接下来,我们将研究如何制作ZIP文件(这也是我们制作的方式)。
为了创建一个新的存档,我们将以w模式创建一个ZipFile实例。
请注意,如果存在同名文件,则该文件将被完全截断。
因此,请确保您的文件名是唯一的。
让我们看一下使用zipfile模块创建一个zip文件的代码段:
import zipfile archive = zipfile.ZipFile('Archive.zip', mode='w') try: archive.write('hello.txt') archive.write('second.txt') print('Files added.') finally: print('Reading files now.') archive.close() zip_archive = zipfile.ZipFile("Archive.zip", "r") # list file information for file_info in zip_archive.infolist(): print(file_info.filename, file_info.date_time, file_info.file_size)
检查有效的ZIP文件
我们还可以测试所提到的文件是否为有效的ZIP存档。
这是一个示例程序:
import zipfile test_files = ['check_if_zipfile.py', 'Archive.zip'] for file in test_files: print('ZIP status for {0}: {1}'.format(file, zipfile.is_zipfile(file)))
解压缩ZIP存档
让我们看一下代码片段:
import zipfile print('Extracting ZIP.') archive = zipfile.ZipFile('Archive.zip', 'r') # Extract to current directory archive.extractall('.') print('ZIP Extracted.') archive.close()
请注意,这里没有建立新目录,而是将文件放在同一目录中。
如果要将文件放在特定位置,请提及目录。
使用其他名称将文件添加到ZIP
可以使用其他名称将成员文件添加到存档中。
这是一个示例程序,显示了如何完成此操作:
import zipfile print('Creating Archive.zip.') archive = zipfile.ZipFile('Archive.zip', mode='w') try: archive.write('hello.txt', arcname='some_hello.txt') archive.write('second.txt', arcname='another.txt') finally: archive.close() print('ZIP created with different name.')