解压缩模块zipfile — Work with ZIP archives(档案文件)

zipfile是一个module ,有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下,我们只需要使用这两个class就可以了。ZipFile是主要的类,用来创建和读取zip文件,ZipInfo是存储的zip文件的每个文件的信息的。

简介:ZIP文件格式是一种常见的归档( archive)和压缩(compression)标准。该模块提供了创建、读取、写入、追加和列出zip文件的工具。任何先进的使用此模块将需要了解格式,如定义在PKZIP应用笔记。该模块目前不处理多盘ZIP文件。它可以处理使用ZIP64扩展的ZIP文件(即大小大于4 GIB的zip文件)。它支持在zip档案中解密加密文件,但目前无法创建加密文件。解密是非常缓慢的,因为它是在本地Python中实现的,而不是C。

class zipfile.ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, compresslevel=None)     

参数:(1)Open a ZIP file, where file can be a path to a file (a string), a file-like object or a path-like object. (2)The mode parameter should be 'r' to read an existing file, 'w' to truncate(截断) and write a new file, 'a' to append(拓展) to an existing file, or 'x' to exclusively(专门的特定的) create and write a new file. If mode is 'x' and file refers to an existing file, a FileExistsError will be raised.If mode is 'a' and file refers to an existing ZIP file, then additional files are added to it. If file does not refer to a ZIP file, then a new ZIP archive is appended to the file. This is meant for adding a ZIP archive to another file (such as python.exe). If mode is 'a' and the file does not exist at all, it is created. If mode is 'r' or 'a', the file should be seekable.(3)compression is the ZIP compression method to use when writing the archive, and should be ZIP_STORED, ZIP_DEFLATED, ZIP_BZIP2 or ZIP_LZMA; unrecognized values will cause NotImplementedError to be raised. If ZIP_DEFLATED, ZIP_BZIP2 or ZIP_LZMA is specified but the corresponding module (zlib, bz2 or lzma) is not available, RuntimeError is raised. The default is ZIP_STORED.(4)If allowZip64 is True (the default) zipfile will create ZIP files that use the ZIP64 extensions when the zipfile is larger than 4 GiB. If it is false zipfile will raise an exception when the ZIP file would require ZIP64 extensions.(5)The compresslevel parameter controls the compression level to use when writing files to the archive. When using ZIP_STORED or ZIP_LZMA it has no effect. When using ZIP_DEFLATED integers 0 through 9 are accepted (see zlib for more information). When using ZIP_BZIP2 integers 1 through 9 are accepted (see bz2 for more information).

支持with语句: ZipFile is also a context manager and therefore supports the with statement. In the example, myzip is closed after the with statement’s suite is finished—even if an exception occurs:

from zipfile import ZipFile
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')

类ZipFile的方法如下

ZipFile.close()      Close the archive file. You must call close() before exiting your program or essential records will not be written.

ZipFile.namelist()     Return a list of archive members by name.

ZipFile.infolist()      Return a list containing a ZipInfo object for each member of the archive. The objects are in the same order as their entries in the actual ZIP file on disk if an existing archive was opened.

ZipFile.extract(member, path=None, pwd=None)     Extract a member from the archive to the current working directory; member must be its full name or a ZipInfo object. Its file information is extracted as accurately as possible. path specifies a different directory to extract to. member can be a filename or a ZipInfo object. pwd is the password used for encrypted files.Returns the normalized path created (a directory or new file).

ZipFile.extractall(path=None, members=None, pwd=None)       Extract all members from the archive to the current working directory. path specifies a different directory to extract to. members is op

ZipFile.printdir()          Print a table of contents for the archive to sys.stdout.

ZipFile.setpassword(pwd)         Set pwd as default password to extract encrypted files.

ZipFile.open(name, mode='r', pwd=None, *, force_zip64=False)       name can be either the name of a file within the archive or a ZipInfo object. The mode parameter, if included, must be 'r' (the default) or 'w'. pwd is the password used to decrypt encrypted ZIP files.  open() is also a context manager and therefore supports the with statement:

from zipfile import ZipFile
with ZipFile('spam.zip') as myzip:
    with myzip.open('eggs.txt') as myfile:   使用with statement
        print(myfile.read())

With mode='w', a writable file handle is returned, which supports the write() method. While a writable file handle is open, attempting to read or write other files in the ZIP file will raise a ValueError.When writing a file, if the file size is not known in advance but may exceed 2 GiB, pass force_zip64=True to ensure that the header format is capable of supporting large files.

ZipFile.read(name, pwd=None)       Return the bytes of the file name in the archive. name is the name of the file in the archive, or a ZipInfo object. The archive must be open for read or append. pwd is the password used for encrypted files and, if specified, it will override the default password set with setpassword(). Calling read() on a ZipFile that uses a compression method other than ZIP_STORED, ZIP_DEFLATED, ZIP_BZIP2 or ZIP_LZMA will raise a NotImplementedError. An error will also be raised if the corresponding compression module is not available.

ZipFile.write(filename, arcname=None, compress_type=None, compresslevel=None)      Write the file named filename to the archive, giving it the archive name arcname (by default, this will be the same as filename, but without a drive letter and with leading path separators removed). If given, compress_type overrides the value given for the compression parameter to the constructor for the new entry. Similarly, compresslevel will override the constructor if given. The archive must be open with mode 'w', 'x' or 'a'.

详细参考zipfile的官方英文原文档

个别函数用法实例参考

猜你喜欢

转载自blog.csdn.net/zz2230633069/article/details/81301249