# 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()
热门文章更多>>
标签更多>>
专题更多>>
最新文章更多>>
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
- 使用 C# 6.0 功能运行 TFS 构建