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

8yoxcaq7  于 12个月前  发布在  Python
关注(0)|答案(1)|浏览(158)

现在我坐着编写一个Python程序来清理我电脑上的垃圾。一切都会好的,但问题出现了。事实是,我不能从我的个人资料的“临时”文件夹中删除文件(顺便说一下,第一个文件夹中的文件需要删除)。
一开始我试着这样做:

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/'

翻译:“拒绝访问”翻译为“拒绝访问”
”什么可能是我的错误吗?**为了获得更详细的答案,我甚至准备将完整的程序代码插入本文。

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

pxy2qtax

pxy2qtax1#

”什么可能是我的错误吗?**
您的第一个错误是试图使用os.system()来实现此目的。Python有内置的函数来操作文件和文件夹,以及一些很好的第三方模块。使用它们(稍后会有更多)。
当您使用os.system()时,您需要注意每个调用都在自己的独立shell上下文中执行指定的命令。其中一个含义是,如果您将cd转换到不同的工作目录或修改环境变量,则这些更改仅对您在该os.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()类似于目录,但它只适用于 * 空 * 目录。
    1.要删除整个目录树,可以使用shutil.rmtree(),但是
    1.你不想这么做C:/Users/{current_user}/AppData/Local/Temp/包含{current_user}当时可能正在运行的 * 所有内容 * 的临时文件。盲目地删除其内容是不安全的,在任何情况下都不应该删除文件夹本身。

相关问题