【问题标题】:windows: python os.unlink raise OSError, [Error 5] Access is deniedwindows:python os.unlink 引发 OSError,[错误 5] 访问被拒绝
【发布时间】:2014-09-17 20:04:38
【问题描述】:

在 Windows 上运行(由任务调度程序使用不同的用户帐户)python 脚本并尝试使用 os.unlink 删除文件,但得到 [错误 5] 访问被拒绝异常。

try:
    os.unlink(file_path)
except OSError as error:
    logger.error('failed, error: {0}'.format(error))

2014-09-18 03:53:44,023 - 错误:[错误 5] 访问被拒绝:u'C:\path\test.tgz'

【问题讨论】:

  • 它可以在命令行上运行吗?你是否正确地转义了反斜杠(ur'C:\path\test.tgz', u'C:\\path\\test.tgz', u'C:/path/test.tgz' all work)?

标签: python windows python-2.7 unlink


【解决方案1】:

使用:

os.system('rmdir "%s"' % path_of_link_to_delete)

为我工作

【讨论】:

  • 附带说明,如果该链接固定到 Windows 资源管理器窗口上的快速访问面板并且打开了一个 Windows 资源管理器窗口,则任何取消链接符号链接的尝试都将失败。关闭所有 Windows 资源管理器窗口为我修复了“拒绝访问”错误。
【解决方案2】:

此脚本由任务调度程序运行。有两个选项可以解决这个问题:一个是授予用户帐户对文件夹的完全控制权,以便脚本能够删除文件;另一种是检查任务调度程序中的“以最高权限运行”。

【讨论】:

  • “最高权限”适用于启用 UAC 时的管理员。这允许进程访问为管理员设置的 ACL。受限用户(授予SeBatchLogonRight 用于后台任务)仍必须被授予对该文件夹的删除访问权限。
【解决方案3】:

您可能没有以管理员身份运行脚本,右键单击 cmd“以管理员身份运行”并在其中打开脚本

【讨论】:

    【解决方案4】:

    您似乎没有正确调用link() 方法。首先,Python 2.x 中的 Windows 不支持链接方法。您只能在 3.2 或更高版本中使用它。有关详细信息,请参阅以下内容:

    如果您转到该链接,您会注意到您需要提供至少 2 个参数。您只提供一个。

    您收到的错误消息听起来像是权限问题。您可能需要以管理员身份运行脚本。文件是否存在?如果没有,您将不得不创建它。另请注意,在 Windows 中,您必须转义反斜杠或使用 Python 的原始字符串(即 r'C:\path\to\file')

    【讨论】:

    • 嗨,迈克,它调用文件的取消链接。这是一个错字。我的坏
    猜你喜欢
    • 2013-12-20
    • 2014-05-21
    • 2017-02-24
    • 2013-06-06
    • 2011-03-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多