复制文件到指定目录(根据最近时间(天数和秒数))
- 作者: 凉城不暖少男心
- 来源: 51数据库
- 2022-08-12
# 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()
推荐阅读
热点文章
Discord.py(重写)on_member_update 无法正常工作
0
Discord.py 在 vc 中获取用户分钟数
0
discord.py 重写 |为我的命令出错
0
Discord.py rewrite 如何 DM 命令?
0
播放音频时,最后一部分被切断.如何解决这个问题?(discord.py)
0
在消息删除消息 Discord.py
0
如何使 discord.py 机器人私人/直接消息不是作者的人?
0
(Discord.py) 如何获取整个嵌入内容?
0
Discord bot 尽管获得了许可,但不能提及所有人
0
Discord.py discord.NotFound 异常
0
