复制文件到指定目录(根据最近时间(天数和秒数))
发布时间:2020-12-17 17:17:52 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 # coding=utf-8#py2.7# 功能:根据天数和秒数复制文件到指定目录,保留文件创建时间和修改时间import datetimeimport osimport shutilfrom stat impor
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 # 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),secs): print(os.path.join(parent,filename)) mkdirs(todir) shutil.copyfile(os.path.join(parent,os.path.join(todir,filename)) stat1=os.stat(os.path.join(parent,filename)) os.utime(os.path.join(todir,(stat1[ST_CTIME],stat1[ST_MTIME])) def run(): # rmdirs(table.values()) walk(1,30*60) #30分之内修改的文件 if __name__ == "__main__": run() 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |