本系列文章来源:<a>https://blog.ansheng.me/article/python-full-stack-way</a>
官方文档:https://docs.python.org/3.5/library/zipfile.html
打包
In [1]: import zipfile
In [2]: import os
In [3]: ls -l
total 4
-rw-r--r-- 1 root root 4 Jun 4 21:05 file.txt
# 以w的方式的时候是打开文件并清空,如果是a方式那么就是追加文件了
In [4]: z = zipfile.ZipFile('zip_file.zip','w')
# 把文件放入压缩包
In [5]: z.write('file.txt')
# 也可以是一个目录
In [6]: z.write('/tmp/python/')
# 关闭文件
In [7]: z.close()
# 查看已经打包的文件
In [8]: ls -l
total 8
-rw-r--r-- 1 root root 4 Jun 4 21:05 file.txt
-rw-r--r-- 1 root root 216 Jun 4 21:07 zip_file.zip
追加一个文件
# 追加其实就是把模式w换成a
>>> z = zipfile.ZipFile('zip_file.zip', 'a')
>>> z.write('/tmp/folder/file.txt')
# 关闭文件
>>> z.close()
# 查看包内的文件
>>> z.namelist()
['tmp/folder/sc.pyc', 'tmp/folder/dir/', 'tmp/folder/file.txt']
查看压缩包内的所有文件
>>> z.namelist()
['tmp/folder/sc.pyc', 'tmp/folder/dir/', 'tmp/folder/file.txt']
解压
>>> z = zipfile.ZipFile('zip_file.zip', 'r')
# extractall把所有的文件解压到当前目录
>>> z.extractall()
>>> os.system("tree tmp/")
tmp/
└── folder
├── dir
└── sc.pyc
2 directories, 1 file
0
解压一个单独的文件
>>> z = zipfile.ZipFile('zip_file.zip', 'r')
# 返回文件所在路径
>>> z.extract("tmp/folder/sc.pyc")
'/home/ansheng/tmp/folder/sc.pyc'
>>> os.system("tree tmp/")
tmp/
└── folder
└── sc.pyc
1 directory, 1 file
0