如何运行具有管理员权限的python代码

时间:2015-09-04 14:09:04

标签: python windows admin

我想复制将一些文件从我的PC移动到我的USB,但是,当我运行它时,它说:

WindowsError: [Error 5] Access denied: 'F:\\'

如何在python中使用管理员权限来避免此错误。 此外,这是代码:

import os
import shutil
from os import walk

ruta='C:\\'
final='F:\\'
for (path,ficheros,archivos) in walk(ruta):
    for i in archivos:
        shutil.copytree(ruta,final)
    for i in ficheros:
        shutil.copytree(ruta,final)

2 个答案:

答案 0 :(得分:1)

最简单的解决方案是以管理员身份启动Python流程。根据您启动脚本的方式,有不同的方法可以执行此操作。最简单的解决方案是以管理员身份启动控制台,然后从那里运行Python命令。

如果您想要点击某些内容,您还可以通过从上下文菜单(右键菜单)中选择“以管理员身份运行”来创建快捷方式并运行它。

否则,您还可以使脚本请求提升权限in some not-so-simple way

答案 1 :(得分:0)

需要注意的一些要点:

  1. shutil.copytree()已经进行了递归文件复制。无需使用os.walk来获取每个单独的文件。以下是所需的全部内容:

    shutil.copytree('C:\\', 'F:\\')

  2. 尝试将整个C:驱动器复制到USB可能会在某些时候失败,因为某些文件和文件夹无法复制。选择某些文件夹会更好。

  3. 如果您尝试定位USB记忆棒上的根文件夹,则会出现Access denied错误。您还需要确保目标目录不存在。请尝试以下方法:

    shutil.copytree('C:\\', 'F:\\c_drive')

  4. 最后,像这样做一个完整的副本可能需要很长时间,并且没有关于它进展速度的反馈。您使用os.walk的想法可以解决这个问题,方法是允许您一次只复制一个文件,但代码需要修复。