import os
import time
def delete_files(dir, max_size):
# 获取目录内的文件列表,并按时间戳排序
files = [(os.path.join(dir, f), os.stat(os.path.join(dir, f)).st_mtime)
for f in os.listdir(dir) if os.path.isfile(os.path.join(dir, f))]
files.sort(key=lambda x: x[1])
total_size = sum(os.path.getsize(os.path.join(dir, f)) for f in os.listdir(dir)
if os.path.isfile(os.path.join(dir, f)))
if total_size > max_size:
# 目录总大小超过了最大容量,需要进行文件删除
# print(f"目录总大小为 {total_size} 字节,超过了最大容量 {max_size} 字节,进行文件删除...")
total_size_to_delete = 0
for path, timestamp in files:
size = os.path.getsize(path)
if total_size_to_delete + size > total_size / 2:
break # 删除文件总大小已经超过目录半容量,退出循环
total_size_to_delete += size
try:
os.remove(path)
# print(f"已删除文件 {path}")
except os.error:
print(f"无法删除文件 {path}")
# print(f"已删除 {total_size_to_delete} 字节文件,目前目录总大小为 {total_size - total_size_to_delete} 字节。")
else:
pass
# print(f"目录总大小为 {total_size} 字节,未超过最大容量 {max_size} 字节,无需进行文件删除。")
def check_dir_size(dir_to_check, max_size):
# 检查目录总大小是否超过阈值,如果超过则删除一半文件
dir_size = sum(os.path.getsize(os.path.join(dir_to_check, f)) for f in os.listdir(dir_to_check)
if os.path.isfile(os.path.join(dir_to_check, f)))
# print(dir_size)
if dir_size > max_size:
delete_files(dir_to_check, max_size)
if __name__ == '__main__':
# 设定参数,阈值设置为8G # 需要监视的文件夹路径和最大容量(字节)
dirs = {"E:/AAA": 8589934592, "E:/BBB": 8589934592, "E:/CCC": 8589934592,"E:/DDD": 8589934592}
# 对每个目录进行检测操作
for dir_to_check, max_size in dirs.items():
check_dir_size(dir_to_check, max_size)
针对以上脚本,将其放入windows定时任务中,设置按一定时间间隔执行,即可定时删除文件任务。
步骤:
- 打开 Windows 任务计划程序:按下“win + r”键,输入“taskschd.msc”,然后按回车键。
- 在任务计划程序中,右键单击“任务计划程序库”并选择“创建任务”。
- 在“常规”选项卡中,为您的任务命名,并选择与您的操作系统兼容的操作系统版本。
- 在“触发器”选项卡中,创建一个触发器来指定何时运行任务。
- 在“操作”选项卡中,选择“启动程序”,然后在“程序/脚本”字段中输入Python解释器的路径,如“C:\Python27\python.exe”。
- 在“参数”字段中输入Python脚本的路径,如“D:\code\example.py”。
- 在“条件”选项卡中,您可以选择任务运行的其他条件,例如计算机是否处于空闲状态或是否连接到电源。
- 单击“确定”按钮以保存任务,系统不会自动为您运行该任务,您需要启动该任务或等待任务触发器的触发时间。
以上这些步骤可用于创建 Windows 定时任务来自动化执行 Python 脚本。注意,您需要将 Windows 中的Python路径和脚本路径替换为您自己的路径。