为什么os.rename有时返回错误访问被拒绝python

时间:2014-07-21 04:28:32

标签: python windows python-2.7

我使用os.rename()方法重命名我的python脚本中的目录。该脚本每天由调度程序自动调用。有时os.rename()函数返回错误

 [Error 5] Access is denied

但所有其他时间它的工作正常。 代码,

try:
  if(os.path.exists(Downloaded_Path)):
    os.rename(Downloaded_Path, Downloaded_Path + "_ByClientTool")
except Exception,e:
  print "Error !!", str(e)
  return 1

3 个答案:

答案 0 :(得分:2)

该错误表示调度程序用于运行程序的用户帐户无权重命名该目录。

有时可行但有时不工作的一个常见原因是程序会创建一些需要重命名的目录,而不是其他目录。

  • 程序直接创建的目录具有运行程序的用户的修改权限,因此可以重命名。
  • 但是,以前由其他内容创建的目录可能会限制默认情况下运行该程序的用户的访问权限。

了解Windows文件和文件夹权限:http://technet.microsoft.com/en-us/library/bb727008.aspx

答案 1 :(得分:0)

如果主机名不是"网络合格"这也将失败同样的方式。

>>> os.renames(r'\\host.domain.com\joan\rocks', r'\\host\joan\jett\rocks')
WindowsError: [Error 5] Access is denied

>>> os.renames(r'\\host\joan\rocks', r'\\host\joan\jett\rocks')
>>>

>>> os.renames(r'\\host.domain.com\joan\rocks', r'\\host.domain.com\joan\jett\rocks')
>>>

答案 2 :(得分:0)

在Windows 10上,我遇到了类似的问题:有时我的python脚本无法重命名目录,即使我可以手动将其重命名也没有问题。

我使用Sysinternal的handle.exe工具发现explorer.exe拥有我要重命名的目录的子目录的句柄。事实证明,资源管理器正在将该子目录添加到其“快速访问”部分,这阻止了我的脚本重命名该文件夹。

我最终决定从资源管理器->视图->选项->常规->隐私权中禁用“在快速访问中显示经常使用的文件夹”选项。