【问题标题】:When using python os.rmdir, get PermissionError: [WinError 5] Access is denied使用python os.rmdir时,得到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 复制了包含它的树。也许复制功能使文件夹对象处于“打开”状态?

标签: python python-2.7 file-permissions


【解决方案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】:

        你能检查一下:

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

        【讨论】:

        • 当然可以。我没有从 Om 运行,除了解释器和 Notepad++ 中的 .py 文件本身之外,我没有打开任何窗口,并且我拥有 TestDir0 的权限。
        猜你喜欢
        • 1970-01-01
        • 2021-01-10
        • 2022-01-25
        • 2020-06-20
        • 2017-08-14
        • 2021-03-23
        • 2020-07-22
        • 1970-01-01
        相关资源
        最近更新 更多