使用 Python 删除文件/文件夹时出现问题

Problem deleting files/folders using Python

提问人:KirOFF 提问时间:10/14/2023 更新时间:10/14/2023 访问量:57

问:

现在我坐下来制作一个 Python 程序来清理我 PC 上的垃圾。一切都会好起来的,但出现了一个问题。 事实是,我无法从配置文件的“Temp”文件夹中删除文件(顺便说一下,这是需要从中删除文件的第一个文件夹)。

起初我试着这样做:

os.system(f'cd C:/Users/{current_user}/AppData/Local/Temp')
os.system(f'del /s /q *')

然而,它不仅不起作用,我突然几乎杀死了我的笔记本电脑,因为出于某种原因,删除文件的命令不是扩展到特定文件夹,而是扩展到整个磁盘

我第二次做这个代码:

os.system(f'cd C:/Users/{current_user}/AppData/Local/Temp')
os.remove(f'C:/Users/{current_user}/AppData/Local/Temp/')

但是在命令行中运行它(当时在管理员模式下启用)后,显示以下错误:

Traceback (most recent call last):
  File "C:\Users\Home\PycharmProjects\mainProject\GlowClean.py", line 46, in <module>
    easy_clean()
  File "C:\Users\Home\PycharmProjects\mainProject\GlowClean.py", line 42, in easy_clean
    os.remove(f'C:/Users/{current_user}/AppData/Local/Temp/')
PermissionError: [WinError 5] Отказано в доступе: 'C:/Users/Home/AppData/Local/Temp/'

翻译:“Отказано в доступе”翻译为“访问被拒绝”

我可能犯了什么错误?为了获得更详细的答案,我什至准备在这篇文章中插入完整的程序代码。

附言不要严厉地评判我,因为我不知道显而易见的事情,我还是 Python 的新手。

python-3.x 操作系统 sys

评论

0赞 John Gordon 10/14/2023
每次调用都会调用一个新 shell。第二次调用未保留第一次调用的工作目录。os.system()os.system()

答:

0赞 John Bollinger 10/14/2023 #1

我可能犯了什么错误?

你的第一个错误是试图用于这个目的。Python 具有用于操作文件和文件夹的内置函数,以及一些不错的第三方模块。使用它们(稍后会详细介绍)。os.system()

使用 时,需要注意每个调用都在其自己的独立 shell 上下文中执行指定的命令。其中的含义是,如果您访问不同的工作目录或修改环境变量,则这些更改仅对您在该调用中运行的命令可见。因此,您的os.system()cdos.system()

os.system(f'cd C:/Users/{current_user}/AppData/Local/Temp')
os.system(f'del /s /q *')

在功能上等同于

os.system(f'del /s /q *')

独自。这不太可能是你想要的。它实际尝试删除的内容取决于主机的工作目录。python

就您的第二次尝试而言,同样,使用更改工作目录是没有意义的,但本质上并没有错误。这里的问题是os.system()

  1. os.remove()仅适用于常规文件,不适用于目录
  2. os.rmdir()是目录的模拟,但它仅适用于目录。
  3. 要删除整个目录树,可以使用 ,但是shutil.rmtree()
  4. 你不想这样做。 包含当时可能正在运行的所有内容的临时文件。盲目删除其内容是不安全的,在任何情况下都不应删除文件夹本身。C:/Users/{current_user}/AppData/Local/Temp/{current_user}

评论

0赞 KirOFF 10/15/2023
谢谢,一切都很好,它在需要的地方清洁。