python将目录压缩为zip格式

前几天搞数据备份,因为有windows系统和linux系统,为了备份的数据格式统一,就都把要备份的数据自动打包成zip文件了,这样在linux系统上也方便解压,之前用的rar格式,linux默认解压不了,比较麻烦,经过这么一折腾,就方便多了,用python实现目录的压缩,主要是用到了zipfile模块,来创建文件实例,然后写入文件名称,基本思路就是这个,我们来看代码:

我们来逐行解释,代码最开始几行是导入的需要的模块,再往下是定义了一个函数,cr_zip()函数接受两个参数,一个是压缩后的文件名称,一个是是要压缩的目录路径,函数头几行是先判断用户提供的是否是个目录,如果不是,程序直接退出,如果是调用os.walk()函数,遍历这个目录,os.walk()函数返回三个元组,分别对应目录的路径,子目录名称,除了目录外的文件名字,如果要将他们拼成完成路径,需要用到os.path.join(dirpath, name)函数,这个函数会将目录和文件拼在一起返回,所以脚本用这个函数来做拼接,将拼接的完整路径加入filelist列表中,

这行返回zipfile实例,除了’w’写入模式,还有’r’读,’a’添加一个文件到现有压缩文件中,zipfile.ZIP_DEFLATED是压缩采用的方法,另一个方法是ZIP_STORED,这是默认的,表示不压缩,因为我们需要压缩,所以我们没有用默认的方法,最后是一个循环,遍历filelist列表,把文件加入归档到script_20160203.zip中。