如何在不使用python中的shutil的情况下将文件从一个位置复制到另一个位置

时间:2013-05-14 11:15:06

标签: python

我尝试使用shutil但python调试器正在抛出错误。我知道为什么会这样?还有其他方法吗?

path = "C:\\Program Files (x86)"
if os.path.exists(path):
    src= "C:\\Program Files (x86)\\abc\\xyz\\QuickTest\\Scripts\\RouterTester900\\Diagnostic\\RouterTester900SystemTest"
else:
    src= "C:\\Program Files\\abc\\xyz\\QuickTest\\Scripts\\RouterTester900\\Diagnostic\\RouterTester900SystemTest"
dest = "C:\\Sanity_Automation\\"
shutil.copy(src,dest)

更新

出现此错误:

Traceback (most recent call last):
     File "C:\Sanity_Automation\Work_Project\copy.py", line 15, in <module>
shutil.copy(src, dest)
     File "C:\Sanity_Automation\Python272\lib\shutil.py", line 116, in copy
copyfile(src, dst)
     File "C:\Sanity_Automation\Python272\lib\shutil.py", line 81, in copyfile
with open(src, 'rb') as fsrc:
     IOError: [Errno 13] Permission denied: 'C:\\Program Files (x86)\\Agilent\\N2X\\QuickTest\\Scripts\\R

2 个答案:

答案 0 :(得分:2)

使用shutil 是实现目标的正确方法,因此您应该理解为什么会失败而不是搜索替代方案。

你追溯显示:

IOError: [Errno 13] Permission denied: 'C:\\Program Files (x86)\\Agilent\\N2X\\QuickTest\\Scripts\\R

使用替代复制方法将无法修复权限问题。正如Torxed在他的回答中所说,你最有可能在Windows 7下运行,其中Program Files目录受到限制性权限。

在旁注中,您应该考虑将raw strings用于包含反斜杠的路径,方法是在文字前加上r

path = r"C:\Program Files (x86)"

答案 1 :(得分:1)

import os
os.system('mv /src/path /new/path')

import os
os.rename('/source/path', '/source/new_path')

除了shutils之外你还有两个选择(但两者都不能解决你的问题)

其次,您的原始问题很可能是因为您运行的是Win7(或64位服务器操作系统)并且您没有以管理员身份运行cmd.exe promt(或python脚本) 。
管理C:\Program Files\(和(x86))是普通用户禁止的。

尝试将脚本放在C:\Users\<your username>\Desktop\quicktest\中,看看是否收到同样的错误。或以管理员身份运行cmd.exe或python脚本。