Python脚本在Windows中以什么用户身份运行?

44 投票
7 回答
45097 浏览
提问于 2025-04-15 13:18

我想用Python删除一些文件夹,但遇到了权限错误。我觉得可能是Python的用户账户没有权限?

WindowsError: [Error 5] Access is denied: 'path'

这是我运行脚本时得到的错误信息。
我试过

shutil.rmtree  
os.remove  
os.rmdir

但它们都返回了相同的错误。

7 个回答

2

这些脚本没有特别的用户,它们只是以当前登录的用户身份运行,也就是执行脚本的那个用户。

你有没有试着检查一下:

  • 你要删除的路径是否有效?还有
  • 这个路径下有没有被锁定的文件?
2

我从来没有用过Python,但我想它应该是以执行这个脚本的用户身份来运行的。

87

我们在Windows上删除文件和文件夹时遇到了一些问题,即使我们刚复制过这些文件,如果它们被设置为“只读”,也无法删除。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)

你可以试试看这个方法。

撰写回答