本系列文章來源:<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