繁体   English   中英

为什么 os.rename 有时会返回错误 access is denied python

[英]Why os.rename sometimes returns error access is denied python

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

 [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

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

它有时起作用而有时不起作用的一个普遍原因是该程序创建了一些需要重命名的目录,而没有创建其他目录。

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

了解有关Windows文件和文件夹权限的信息: http : //technet.microsoft.com/zh-cn/library/bb727008.aspx

如果主机名不是通过“网络限定”的相同方式,这也将失败。

>>> 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')
>>>

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

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

最后,我从浏览器->视图->选项->常规->隐私权中禁用“在快速访问中显示常用文件夹”选项。

因此,如果您在尝试重命名的目录中打开了任何文件、应用程序或文件夹,您将收到该错误。 您关闭它们,以便 windows 将它们从快速访问列表中删除。 这对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM