Ser*_*lva 11 python windowserror
我正在研究一个测试用例,我为其创建了一些子目录.但是,我似乎没有权限删除它们.我的UA是管理员帐户(Windows XP).
我第一次尝试:
folder="c:/temp/"
for dir in os.listdir(folder):
os.remove(folder+dir)
Run Code Online (Sandbox Code Playgroud)
然后
folder="c:/temp/"
os.remove(folder+"New Folder")
Run Code Online (Sandbox Code Playgroud)
因为我确定"新文件夹"是空的.但是,在所有情况下,我得到:
Traceback (most recent call last):
File "<string>", line 3, in <module>
WindowsError: [Error 5] Access is denied: 'c:/temp/New Folder'
Run Code Online (Sandbox Code Playgroud)
有人知道出了什么问题吗?
Aes*_*ete 17
os.remove需要文件路径,OSError如果path是目录则引发.
尝试 os.rmdir(folder+'New Folder')
哪个会:
删除(删除)目录路径.仅在目录为空时才起作用,否则引发OSError.
使用os.path.join以下方法制作路径也更安全:
os.path.join("c:\\", "temp", "new folder")
Run Code Online (Sandbox Code Playgroud)
app*_*eev 17
尝试内置的shutil模块
shutil.rmtree(folder+"New Folder")
Run Code Online (Sandbox Code Playgroud)
这会递归删除一个目录,即使它有内容.
小智 11
对于 Python 3.6,文件权限模式应为 0o777:
os.chmod(filePath, 0o777)
os.remove(filePath)
Run Code Online (Sandbox Code Playgroud)
os.remove()仅适用于文件.它不适用于目录.根据文件:
os.remove(path)删除(删除)文件路径.如果path是目录,则引发OSError; 请参阅下面的rmdir()以删除目录.这与下面记录的unlink()函数相同.在Windows上,尝试删除正在使用的文件会导致引发异常; 在Unix上,目录条目被删除,但分配给该文件的存储在原始文件不再使用之前不可用.
使用os.removedirs()的目录
你可以使用Shutil模块删除目录及其子文件夹
import os
import shutil
for dir in os.listdir(folder):
shutil.rmtree(os.path.join(folder,dir))
Run Code Online (Sandbox Code Playgroud)
小智 5
使用os.rmdir而不是os.remove删除文件夹
os.rmdir("d:\\test")
Run Code Online (Sandbox Code Playgroud)
它将从d:\\目录中删除测试文件夹