【问题标题】:Python schedule delete filePython计划删除文件
【发布时间】: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


【解决方案1】:

您没有将文件名附加到取消链接命令。 我对 os.scandir() 不熟悉,所以我在下面的示例中将其更改为 os.listdir():

def delectfiles():
    for file in os.listdir("/Users/xxx/Desktop/FYP 1st Draft"):
        if file.name.endswith(".docx"):
            os.unlink(os.path.join("/Users/xxx/Desktop/FYP 1st Draft/", file))

【讨论】:

  • 谢谢!它有效
猜你喜欢
  • 2011-02-19
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多