关于python模块zipfile的使用,网上已经有很多例子了,当然最好的参考资料就是官方文档。 之所以写这篇博客只是记录下自己的学习过程,方便自己以后查阅,也希望能为他人多提供一份参考,毕竟每个人的理解就不一样, 多一份参考总是好的(^_^,如有错误,望各位网友指出)。
在windows下已经有很多优秀的GUI压缩工具,但有时候在开发过程中如果还是用图形化界面去操作, 不免繁琐,而且容易出错。python作为一门脚本语言,拥有强大的库,zipfile只是冰山一角。在进行压缩解压缩的过程中,利用python 的zipfile模块能够有效的进行批处理。
#encoding:utf-8
'''
Created on 2014年8月27日
@author: Diego Lee
'''
import os.path
import sys
import zipfile
def pzip(src, zipname = None):
"""zip directory or file
src: source to be compressed, can be directory or file
zipname: the target compressed name, if zipname is none,
it will be resigned by src
"""
filelist = []
if os.path.isfile(src):
filelist.append(src)
else:
for root, dirs, files in os.walk(src):
for name in files:
filelist.append(os.path.join(root, name))
if zipname is None:
zipname = os.path.basename(os.path.normpath(src)) + ".zip"
print "begin zip file(s) to", zipname
zf = zipfile.ZipFile(zipname, 'w', zipfile.zlib.DEFLATED)
for filename in filelist:
zf.write(filename)
print "zip ", filename
zf.close()
print "Done"
def usage():
print "usage: python pzip.py source [zipname]"
def main(argv):
length = len(argv[1:])
if length == 1:
pzip(argv[1])
elif length == 2:
pzip(argv[1], argv[2])
else:
usage()
if __name__ == "__main__":
try:
main(sys.argv)
except Exception, e:
print e