我正在尝试删除目录,但是当我运行代码时,它会出现Windows错误5:访问被拒绝。这是我的代码:在Release文件夹中,有一个名为OD
的文件夹。
if os.path.exists(os.path.join(get_path_for_output,'Release')):
shutil.rmtree(os.path.join(get_path_for_output,'Release'))
错误就像:
WindowsError: [Error 5] Access is denied: 'C:\\Users\\marahama\\Desktop\\Abdur_Release\\Release\\OD\\automations\\GEM\\FMS_adapter.py'
答案 0 :(得分:4)
这是由于文件权限问题造成的。
您需要具有在该文件上执行该任务的权限。
要获取与文件关联的权限,请使用os.stat(fileName)
您可以使用os.access(fileName, os.W_OK)
然后,要更改权限os.chmod(fileName,permissionNumeric)
。
例如:os.chmod(fileName, '0777')
要更改正在执行的当前文件的权限,
使用os.chmod(__file__, '0777')
答案 1 :(得分:1)
我使用pydev。我的解决方案是:
答案 2 :(得分:0)
takeown /F C:\<dir> /R /A
icacls C:\<dir> /grant administrators:F /t
如果您的用户是管理员,则授予管理员所有权并完全控制管理员。
答案 3 :(得分:0)
要更改位于“C:”的文件,您必须具有管理员权限, 您可以在启动脚本之前或在执行此操作时获取它们,例如:
#!python
# coding: utf-8
import sys
import ctypes
def run_as_admin(argv=None, debug=False):
shell32 = ctypes.windll.shell32
if argv is None and shell32.IsUserAnAdmin():
return True
if argv is None:
argv = sys.argv
if hasattr(sys, '_MEIPASS'):
# Support pyinstaller wrapped program.
arguments = map(unicode, argv[1:])
else:
arguments = map(unicode, argv)
argument_line = u' '.join(arguments)
executable = unicode(sys.executable)
if debug:
print 'Command line: ', executable, argument_line
ret = shell32.ShellExecuteW(None, u"runas", executable, argument_line, None, 1)
if int(ret) <= 32:
return False
return None
if __name__ == '__main__':
ret = run_as_admin()
if ret is True:
print 'I have admin privilege.'
raw_input('Press ENTER to exit.')
elif ret is None:
print 'I am elevating to admin privilege.'
raw_input('Press ENTER to exit.')
else:
print 'Error(ret=%d): cannot elevate privilege.' % (ret, )
代码取自:How to run python script with elevated privilege on windows
脚本:Gary Lee