“‘
目的:综合文件操作相关属性设计示例
示例说明:本示例主要目的是将给定目录下所有满足条件的文件进行压缩,并且以当前时间为名称,如果已经存在,则继续压缩到之前目录,如果不存在,则以当前时间为名称
作者:琦琦爸爸
’”
#coding:utf-8
import datetime
import os
import zipfile
#按现在时间为压缩文件取名
def make_name():
#获取当前时间,包括年月日时分秒
i=str(datatime.datatime.now())
#取前面的年月日
name=i.split(‘ ‘)[0]
#将年月日加上后缀名称
name=name+‘.zip‘
#返回文件名称,为后面调用铺垫
return name
def dabao():
#判断给定的文件路径是否是目录或者是文件
if not os.path.isdir(path) and not os.path.isfile(path):
return False
#判断文件是否是目录,如果是,则执行下面代码
if os.path.isfile(paht)
#区分目录路径和文件路径
f=os.path.split(path)
#重组目录路径和文件名
path=f[0]+‘/‘+f[1]
#获取文件后缀名
file_end=f[1].split(‘.‘)[-1]
#定义哪些后缀名需要打包压缩的
wenjianhouzui=[‘txt‘,‘log‘]
#循环查找哪些文件满足条件
if file_end in wenjianhouzui:
dir_mulu=f[0]+‘/‘+make_name()
判断压缩的文件名是否存在,如果不存在,就以“w”的方式写入(其实可以只保留下面的方式,但为了了解w和a的区别,故多用了一个判断)
if not os.path.exists(dir_mulu):
f=zipfile.Zipfile(dir_mulu,‘w‘)
f.write(path)
f.close()
#删除已经打包的文件
os.remove(path)
else:
dir_mulu=f[0]+‘/‘+make_name()
#这里的“a”是追加执行。如果改成“w”,则只会压缩最后一次压缩的文件,之前的会被删除
f=zipfile.Zipfile(dir_mulu,‘a‘)
f.write(path)
f.close()
os.remove(path)
#判断给定的目录是否是目录,如果是执行下面的代码
if os.path.isdir(path):
#列出目录下的所有的文件名,并且遍历所有的文件
for x in os.listdir(path):
#组装目录名和文件名
name=os.path.join(path,x)
#将组装好的名字传递给函数dabao去执行
dabao(name)
#给定一个需要压缩的文件路径
dir="D:\test"
#将“\”转化为“/”,不然会出错
dir=dir.replace("\\",‘/‘)
dabao(dir)