复制文件到指定目录(根据最近时间(天数和秒数)),目录天数,# coding=utf
文章由Byrx.net分享于2019-03-23 05:03:15
复制文件到指定目录(根据最近时间(天数和秒数)),目录天数,# coding=utf
# coding=utf-8#py2.7# 功能:根据天数和秒数复制文件到指定目录,保留文件创建时间和修改时间import datetimeimport osimport shutilfrom stat import ST_CTIME, ST_MTIMEimport types# 不支持递归子目录table={ r'源文件夹':r'目标文件夹'}# 创建多级空目录def mkdirs(dirs): if not type(dirs) is types.StringType: for dir in dirs: if not os.path.isdir(dir): print dir+"\t"*5+"created!" os.makedirs(dir) else: if not os.path.isdir(dirs): print dirs+"\t"*5+"created!" os.makedirs(dirs)# 删除非空文件夹def rmdirs(dirs): if not type(dirs) is types.StringType: for dir in dirs: if os.path.isdir(dir): shutil.rmtree(dir) print dir+"\t"*5+"deleted!" else: if os.path.isdir(dirs): shutil.rmtree(dirs) print dirs+"\t"*5+"deleted!"def getModifyTime(dir): if(os.path.exists(dir)): timestamp = os.path.getmtime(dir) # print datetime.datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S') return datetime.datetime.fromtimestamp(timestamp)# 是否最近某个时间范围之内的文件,天和秒共同决定def after(file,days,seconds): now = datetime.datetime.now() timepoint = getModifyTime(file) delta= now-timepoint # print delta if(delta.days - days<0): return True elif(delta.days - days>0): return False else: return delta.seconds-seconds<=0# 遍历文件夹def walk(days,secs): for key in table.keys(): root=key todir=table[key] if(os.path.isdir(root)): for parent,dirnames,filenames in os.walk(root): #三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字 # dirnames[:] = [] # for dirname in dirnames: #输出文件夹信息 # print "parent is:\t" + parent # print "dirname is:\t" + dirname for filename in filenames: #输出文件信息 # print "parent is:" + parent # print "filename is:" + filename # print "the full name of the file is:" + os.path.join(parent,filename) #输出文件路径信息 if after(os.path.join(parent,filename),days,secs): print(os.path.join(parent,filename)) mkdirs(todir) shutil.copyfile(os.path.join(parent,filename),os.path.join(todir,filename)) stat1=os.stat(os.path.join(parent,filename)) os.utime(os.path.join(todir,filename),(stat1[ST_CTIME], stat1[ST_MTIME]))def run(): # rmdirs(table.values()) walk(1,30*60) #30分之内修改的文件if __name__ == "__main__": run()
评论关闭