使用python os.rmdir时,得到PermissionError: [WinError 5] Access is denied

Posted

技术标签:

【中文标题】使用python os.rmdir时,得到PermissionError: [WinError 5] Access is denied【英文标题】:When using python os.rmdir, get PermissionError: [WinError 5] Access is denied 【发布时间】:2016-07-21 11:41:00 【问题描述】:

我正在构建一个文件传输脚本,源代码清理功能使用os.rmdir('C:\\Users\\Grav\\Desktop\\TestDir0\\Om')。这是我得到的错误:

PermissionError: [WinError 5] Access is denied: 'C:\\Users\\Grav\\Desktop\\TestDir0\\Om'

我通过 Windows 7 检查了文件夹 Om 的权限,它们被设置为允许删除我的用户帐户。我还尝试将我的解释器设置为以管理员身份运行。问题仍然存在,我被困住了。非常感谢任何有洞察力的人!

【问题讨论】:

您在尝试删除之前是否在代码中关闭了文件? 在 Windows 中,您无法*访问或删除被其他进程打开的文件。有人称其为功能。 * 至少不用对 win32 api 做一些奇怪的修改 我实际上并没有打开文件(另外,它是一个文件夹,所以我不确定 Python 是否像文件一样将其视为“打开”或“关闭”对象),但我确实使用 shutil.copytree 复制了包含它的树。也许复制功能使文件夹对象处于“打开”状态? 【参考方案1】:

在删除目录之前尝试删除目录中的所有文件:

import os
path_to_dir  = 'C:\\Users\\Desktop\\temp'  # path to directory you wish to remove
files_in_dir = os.listdir(path_to_dir)     # get list of files in the directory

for file in files_in_dir:                  # loop to delete each file in folder
    os.remove(f'path_to_dir/file')     # delete file

os.rmdir(path_to_dir)                      # delete folder

【讨论】:

【参考方案2】:

取消选中文件/文件夹属性中的只读属性框。

【讨论】:

你如何以编程方式做到这一点?【参考方案3】:

我也有同样的问题,可以通过shutil 模块解决。

import shutil
shutil.rmtree('/path/to/your/dir/')

【讨论】:

【参考方案4】:

我在这里找到了解决方案:What user do python scripts run as in windows?

似乎有问题的文件夹具有顽固的只读属性。添加一个处理程序来更改这些只读标志对我来说就像一个魅力。

所有发布建议的人,你们帮我找到了最终的答案,所以谢谢!

【讨论】:

【参考方案5】:

你能检查一下:

    您不在目录0m 中并从那里运行脚本。 您没有打开任何列出0m 目录的窗口。 由于0mTestDir0 的子目录,因此您对TestDir0 具有正确的权限

【讨论】:

当然可以。我没有从 Om 运行,除了解释器和 Notepad++ 中的 .py 文件本身之外,我没有打开任何窗口,并且我拥有 TestDir0 的权限。

以上是关于使用python os.rmdir时,得到PermissionError: [WinError 5] Access is denied的主要内容,如果未能解决你的问题,请参考以下文章

python 移除文件

python-os.rmdir与shutil.rmtree的区别和用法

python中os模块用法大全

如何删除目录? os.removedirs 和 os.rmdir 是不是只用于删除空目录? [复制]

使用python删除一个文件或文件夹

Python删除文件命令合集