清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
# coding=utf-8 #py2.7 # 功能:根据天数和秒数复制文件到指定目录,保留文件创建时间和修改时间 import datetime import os import shutil from stat import ST_CTIME, ST_MTIME import 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()