用户做什么python脚本在Windows中运行?

Dev*_*ris 32 python windows file-permissions

我试图让python删除一些目录,我得到访问错误.我认为它的python用户帐户没有权限?

WindowsError: [Error 5] Access is denied: 'path'
Run Code Online (Sandbox Code Playgroud)

是我运行脚本时得到的.
我试过了

shutil.rmtree  
os.remove  
os.rmdir
Run Code Online (Sandbox Code Playgroud)

他们都返回相同的错误.

Tho*_*asH 63

我们在Windows上删除文件和目录时遇到了问题,即使我们刚刚复制它们,如果它们被设置为'readonly'.shutil.rmtree()为您提供处理这种情况的异常处理程序.你调用它并提供如下的异常处理程序:

import errno, os, stat, shutil

def handleRemoveReadonly(func, path, exc):
  excvalue = exc[1]
  if func in (os.rmdir, os.remove) and excvalue.errno == errno.EACCES:
      os.chmod(path, stat.S_IRWXU| stat.S_IRWXG| stat.S_IRWXO) # 0777
      func(path)
  else:
      raise

shutil.rmtree(filename, ignore_errors=False, onerror=handleRemoveReadonly)
Run Code Online (Sandbox Code Playgroud)

你可能想尝试一下.

  • 使用 `func in (os.rmdir, os.unlink, os.remove)`,尤其是从 python 3.7 开始。从 3.7 开始,我找不到将 `os.remove` 传递给错误处理程序的位置。“此函数在语义上与 `remove()` 相同” - [python os.unlink](https://docs.python.org/3/library/os.html?highlight=unlink#os.unlink) (3认同)
  • 另请参阅http://www.voidspace.org.uk/downloads/pathutils.py中的`onerror`功能 (2认同)
  • 我尝试了这个解决方案,现在我有了这行的"[Error 5] Access denied"错误:`os.chmod(path,stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)#0777 (2认同)