现在我坐着编写一个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的新手。
1条答案
按热度按时间pxy2qtax1#
”什么可能是我的错误吗?**
您的第一个错误是试图使用
os.system()
来实现此目的。Python有内置的函数来操作文件和文件夹,以及一些很好的第三方模块。使用它们(稍后会有更多)。当您使用
os.system()
时,您需要注意每个调用都在自己的独立shell上下文中执行指定的命令。其中一个含义是,如果您将cd
转换到不同的工作目录或修改环境变量,则这些更改仅对您在该os.system()
调用中运行的命令可见。所以你的在功能上等同于
一个人,这不太可能是你想要的它实际尝试删除的内容取决于主机
python
的工作目录。就第二次尝试而言,再次使用
os.system()
更改工作目录是毫无意义的,但并不是固有的错误。这里的问题是os.remove()
仅适用于常规文件,不适用于目录os.rmdir()
类似于目录,但它只适用于 * 空 * 目录。1.要删除整个目录树,可以使用
shutil.rmtree()
,但是1.你不想这么做
C:/Users/{current_user}/AppData/Local/Temp/
包含{current_user}
当时可能正在运行的 * 所有内容 * 的临时文件。盲目地删除其内容是不安全的,在任何情况下都不应该删除文件夹本身。