【发布时间】:2022-01-06 19:52:53
【问题描述】:
我正在尝试安排一个循环,每分钟代码将帮助删除文件夹中的所有.docx 文件。但是,我的代码实际上并没有删除文件夹上的任何 .docx 文件(我检查了路径是否正确并运行其他代码,例如计算文件数,还为 Mac 上的终端添加全磁盘访问权限),并且循环也接收错误。
我的代码:
import os, os.path
import time
import schedule
csv_count = len(os.listdir("/Users/xxx/Desktop/FYP 1st Draft"))
def delectfiles():
for file in os.scandir("/Users/xxx/Desktop/FYP 1st Draft"):
if file.name.endswith(".docx"):
os.unlink("/Users/xxx/Desktop/FYP 1st Draft")
schedule.every().minute.do(delectfiles)
while True:
schedule.run_pending()
time.sleep(1)
我得到的错误:
Traceback (most recent call last):
File "/Users/xxx/PycharmProjects/Jedox_batch/Jedox.py", line 16, in <module>
schedule.run_pending()
File "/Users/xxx/PycharmProjects/Jedox_batch/venv/lib/python3.8/site-packages/schedule/__init__.py", line 780, in run_pending
default_scheduler.run_pending()
File "/Users/xxx/PycharmProjects/Jedox_batch/venv/lib/python3.8/site-packages/schedule/__init__.py", line 100, in run_pending
self._run_job(job)
File "/Users/xxx/PycharmProjects/Jedox_batch/venv/lib/python3.8/site-packages/schedule/__init__.py", line 172, in _run_job
ret = job.run()
File "/Users/xxx/PycharmProjects/Jedox_batch/venv/lib/python3.8/site-packages/schedule/__init__.py", line 661, in run
ret = self.job_func()
File "/Users/xxx/PycharmProjects/Jedox_batch/Jedox.py", line 11, in delectfiles
os.unlink("/Users/xxx/Desktop/FYP 1st Draft")
PermissionError: [Errno 1] Operation not permitted: '/Users/xxx/Desktop/FYP 1st Draft'
任何建议将不胜感激
【问题讨论】:
-
您不是要在循环内执行
os.unlink(file)吗?否则,您似乎只是在尝试取消链接目录。 -
@SamuelDion-Girardeau 我也尝试过删除,但效果不佳,您能否建议我应该使用另一个命令来删除文件?谢谢
-
不,我是说你没有在循环中使用
file变量,这看起来像是一个疏忽。我认为下面的stackoverflow.com/a/70163774 解决了这个问题。
标签: python-3.x scheduled-tasks