0
点赞
收藏
分享

微信扫一扫

Python 操作压缩文件


Python 操作压缩文件_压缩文件

    我们经常使用压缩程序对文件进行压缩打包,在 Python 中也提供了相应的 zipfile 模块方便我们对 ZIP 压缩文件进行操作。


读取 ZIP 压缩文件

Python 操作压缩文件_python_02


    读取 ZIP 压缩文件必须先创建 ​​ZipFile​​​ 对象,通过调用 ​​zipfile.ZipFile()​​​ 函数,传入 ZIP 文件名字符串就能获取到此 ​​ZipFile​​​ 对象, ​​ZipFile​​​ 对象与 ​​File​​​ 对象类似,使用后需要调用 ​​close()​​​ 函数关闭 ZIP 文件。使用 ​​ZipFile​​​ 对象的 ​​namelist()​​​ 方法可以返回 ZIP 文件中包含的所有文件夹和文件字符串列表。使用 ​​ZipFile​​​ 对象的 ​​getinfo()​​​ 方法可以传入 ZIP 里存在文件的字符串获取此文件的 ​​ZipInfo​​​ 对象,可以再通过调用 ​​file_size​​​ 获取文件压缩前的大小或调用 ​​compress_size​​​ 获取文件压缩后的大小。通过计算 ​​file_size / compress_size​​ 就能获取到文件的压缩效率。


>>> import zipfile
>>> zf = zipfile.ZipFile('C:\\Users\\Caizi\\Python.zip')
>>> zf.namelist()
['Python/', 'Python/day01/', 'Python/day01/python01.py', 'Python/day01/python02.py', 'Python/readme.txt']
>>> readmeInfo = zf.getinfo('Python/readme.txt')
>>> readmeInfo.file_size
9239
>>> readmeInfo.compress_size
4348
>>> readmeInfo.file_size / readmeInfo.compress_size
2.124885004599816
>>> zf.close()



ZIP 压缩文件解压

Python 操作压缩文件_python_02


    使用 ​​extractall()​​​ 函数,可以将 ZIP 压缩文件的所有内容解压到指定路径下。使用 ​​extract()​​ 函数,可以将 ZIP 压缩文件中的指定文件解压到指定路径下,函数返回解压后文件的绝对路径。


>>> import zipfile
>>> zf = zipfile.ZipFile('C:\\Users\\Caizi\\Python.zip')
>>> zf.extractall('C:\\zipTestAll')
>>> zf.extract('Python/readme.txt', 'C:\\zipTest')
'C:\\zipTest\\Python\\readme.txt'
>>> zf.close()



创建 ZIP 压缩文件

Python 操作压缩文件_python_02


    创建 ZIP 压缩文件必须以写模式打开 ​​ZipFile​​​ 对象, ​​ZipFile()​​​ 第一个参数为创建的压缩文件文件名,第二个参数为打开此文件的模式,即写模式 ​​'w'​​​ 。使用 ​​write()​​ 方法将文件写入压缩文件里,第一个参数为要写入文件的文件名字符串,第二个参数为压缩算法。


>>> import zipfile
>>> zf = zipfile.ZipFile('C:\\Users\\Caizi\\new.zip', 'w')
>>> zf.write('C:\\Users\\Caizi\\zipcreate.txt', compress_type=zipfile.ZIP_DEFLATED)
>>> zf.close()



添加文件到 ZIP 压缩文件

Python 操作压缩文件_python_02


    添加文件到 ZIP 压缩文件与创建 ZIP 压缩文件方法相似,只不过在打开 ​​ZipFile​​​ 对象时要以追加模式打开,即 ​​ZipFile()​​​ 第二个参数设为 ​​'a'​​ 。


>>> import zipfile
>>> zf = zipfile.ZipFile('C:\\Users\\Caizi\\new.zip', 'a')
>>> zf.write('C:\\Users\\Caizi\\zipadd.txt', compress_type=zipfile.ZIP_DEFLATED)
>>> zf.close()



举报

相关推荐

0 条评论