代码示例
# -*- coding: utf-8 -*-
import os
import time
# 全局变量用于累计删除文件数
total_deleted_count = 0
def delete_files(dir_path, recursive=False):
"""
删除指定目录下所有文件,并返回本次删除文件数量。
Args:
dir_path (str): 待扫描的目录路径
recursive (bool, optional): 是否递归删除子目录中的文件,默认为False
Returns:
int: 当次删除的文件数量
"""
deleted_count = 0
for root, dirs, files in os.walk(dir_path):
for file_name in files:
file_path = os.path.join(root, file_name)
try:
os.remove(file_path)
deleted_count += 1
except OSError as e:
# python2
print("无法删除文件 {}: {}".format(file_path, e))
# python3
# print(f"无法删除文件 {file_path}: {e}")
if not recursive:
break
return deleted_count
def schedule_delete(dir_path, file_pattern=None, recursive=False, interval_seconds=60):
"""
定时执行删除文件操作,并打印当前已删除和累计删除文件数量。
Args:
dir_path (str): 待扫描的目录路径
file_pattern (str, optional): 文件名匹配模式(正则表达式),默认删除所有文件
recursive (bool, optional): 是否递归删除子目录中的文件,默认为False
interval_seconds (int, optional): 定时任务间隔秒数,默认为60秒
"""
global total_deleted_count
while True:
start_time = time.time()
deleted_count = delete_files(dir_path, recursive) # 移除了不必要的file_pattern参数
total_deleted_count += deleted_count
elapsed_time = time.time() - start_time
# python2
print ("删除完成,本次删除 {} 个文件,累计删除 {} 个文件,耗时 {:.2f} 秒."
.format(deleted_count, total_deleted_count, elapsed_time))
# python3
# print("删除完成,本次删除 {} 个文件,累计删除 {} 个文件,耗时 {:.2f} 秒.".format(
# deleted_count, total_deleted_count, elapsed_time))
time.sleep(interval_seconds - elapsed_time)
if __name__ == "__main__":
dir_path = "/path/to/directory"
recursive = True # 是否递归删除子目录中的文件
interval_seconds = 3600 # 设置定时任务间隔为1小时
schedule_delete(dir_path, recursive, interval_seconds)