Python标准库系列之zipfile模块

本系列文章来源:https://blog.ansheng.me/article/python-full-stack-way
官方文档: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

你可能感兴趣的:(Python标准库系列之zipfile模块)