Python用schedule定时删除docx文件报错及无法删除问题求解
问题解决方法
核心问题根因
- 逻辑错误:删除操作传入的是目标文件夹路径,而非匹配到的
.docx文件路径。os.unlink()仅用于删除文件,传入文件夹路径必然触发报错,也不可能实现删除指定后缀文件的需求 - 权限适配问题:你仅给Terminal授予了全磁盘权限,若你通过PyCharm直接运行代码,需要额外给PyCharm授予全磁盘访问权限,否则依然会触发权限异常
修正后的完整代码
import os import time import schedule # 统一配置目标路径,避免重复书写出错 TARGET_DIR = "/Users/xxx/Desktop/FYP 1st Draft" def delete_files(): for file in os.scandir(TARGET_DIR): # 只处理普通文件,跳过子文件夹 if file.is_file() and file.name.endswith(".docx"): try: os.unlink(file.path) print(f"已删除文件:{file.name}") except Exception as e: print(f"删除文件{file.name}失败:{str(e)}") schedule.every().minute.do(delete_files) if __name__ == "__main__": print("定时删除任务已启动,每分钟扫描一次目标文件夹") while True: schedule.run_pending() time.sleep(1)
额外注意事项
- 原代码中
csv_count变量未被实际使用,可以直接删除;原函数名delectfiles为拼写笔误,修正为更规范的delete_files不影响功能运行 - 如果你需要连带子文件夹内的
.docx也删除,可以改用os.walk遍历目录 - 首次运行前可以先注释掉
os.unlink行,只打印匹配到的文件,确认匹配逻辑符合预期后再开启删除操作,避免误删文件
内容的提问来源于stack exchange,提问作者Bellasere
相关产品推荐
相关产品推荐

