定时清除某个目录的所有文件,但不删除其嵌套的目录
2019-04-28 本文已影响0人
洛奇lodge
第一种方式,使用python语言,做成接口形式,上传文件时,就去删除过期的文件
def del_file(dir, frontHours):
"""
删除过期文件
:param dir: 要删除文件的目录路径
:param frontDay: 指定当前时间的前几个小时
:return:
"""
if dir.endswith('/'):
dir = dir[:-1]
# 现在时间
starttime = datetime.now()
# 过期时间
expire_time = str(starttime + timedelta(hours=-frontHours)).split('.')[0]
for root, dir_list, file_list in os.walk(dir):
for i in file_list:
file_path = root + '/' +i
# 最后一次修改的时间
last1 = os.stat(file_path).st_mtime
# 将时间戳格式化成时间格式的字符串
filetime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(last1))
# 小于过期时间的文件都删除
if expire_time > filetime:
os.remove(file_path)
第两种方式:使用shell语言,在LIUNX系统设置定时任务
1、准备一个shell脚本,找出指定的文件并删除
#!/bin/sh
# 定时将10个小时之前的文件删除
# 格式:find 指定目录 -mmin +分钟 -type 文件类型 -exec 命令 {} \;
find /home/python/Desktop/test/ -mmin +600 -type f -exec rm -f {} \;
2、设置定时任务,定时执行shell脚本
2.1 查看liunx系统有哪些定时任务在执行: crontab -l
2.2 输入crontab -e, 首次进入会提示选择编辑器,选用3
-
如果由于误操作选择不适合的编辑器,可以修改下面全局变量转换为vim编辑器
export EDITOR=vim
2.3 设置定时任务
# 在liunx系统设置定时, 每天凌晨执行一次
0 0 * * * bash /home/python/Desktop/upload_download/clear_file.sh
2.3 删除定时:crontab -r
2.4 时间格式
- 语法:* * * * * command
- 解释: 分 时 日 月 周 命令
- 第1列表示分钟1~59 每分钟用*或者 */1表示
- 第2列表示小时1~23(0表示0点)
- 第3列表示日期1~31
- 第4列表示月份1~12
- 第5列标识号星期0~6(0表示星期天)
- 第6列要运行的命令