我想复制将一些文件从我的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)
答案 0 :(得分:1)
最简单的解决方案是以管理员身份启动Python流程。根据您启动脚本的方式,有不同的方法可以执行此操作。最简单的解决方案是以管理员身份启动控制台,然后从那里运行Python命令。
如果您想要点击某些内容,您还可以通过从上下文菜单(右键菜单)中选择“以管理员身份运行”来创建快捷方式并运行它。
否则,您还可以使脚本请求提升权限in some not-so-simple way。
答案 1 :(得分:0)
需要注意的一些要点:
shutil.copytree()
已经进行了递归文件复制。无需使用os.walk
来获取每个单独的文件。以下是所需的全部内容:
shutil.copytree('C:\\', 'F:\\')
尝试将整个C:
驱动器复制到USB可能会在某些时候失败,因为某些文件和文件夹无法复制。选择某些文件夹会更好。
如果您尝试定位USB记忆棒上的根文件夹,则会出现Access denied
错误。您还需要确保目标目录不存在。请尝试以下方法:
shutil.copytree('C:\\', 'F:\\c_drive')
最后,像这样做一个完整的副本可能需要很长时间,并且没有关于它进展速度的反馈。您使用os.walk
的想法可以解决这个问题,方法是允许您一次只复制一个文件,但代码需要修复。