Shutil.copy不会复制

时间:2015-03-29 04:59:46

标签: python shutil

全新的编程,使用python和#34;艰苦学习Python。"

出于某种原因,我无法让shutil.copy复制文件。在我的桌面上,我目前有一个文件" test1.txt"和另一个" test2.txt"。我想将test1中的内容复制到test2中。

在另一个关于如何以尽可能少的行复制文件的讨论中,我找到了这段代码:

import shutil, sys  
shutil.copy(sys.argv[a], sys.argv[b]) # <- I plug in test1 and test2

我收到错误 - NameError:name&#39; test1&#39;未定义

但是,将test1和test2放入a和b中的变化没有成功。我已经尝试过test,test1.txt,设置test1变量,然后将其插入,没有。

2 个答案:

答案 0 :(得分:0)

您应该使用shutil.copy(a, b)而不是shutil.copy(sys.argv[a], sys.argv[b])。显然,ab的值可能是路径名,而不是人们所期望的数字,如果它们是sys.argv列表的索引。

如果存在名为test1的文件或目录,则以下内容应该有效:

a = "test1"
b = "test2"
shutil.copy(a, b)

答案 1 :(得分:0)

sys.argv返回一个列表。 sys.argv[0]包含脚本的名称,sys.argv[1]sys.argv[2]包含命令行参数:

import shutil, sys                                                                                                                                                    

print sys.argv # print out the list so you can see what it looks like

a = sys.argv[1]
b = sys.argv[2]                                                                                                                                                      
shutil.copy(a, b)    # a & b take their values from the command line                                                                                                                             

shutil.copy('text1','text2')  # here shutil is using hard coded names

命令行:

$ python filecopy.py t1.txt t2.txt

输出:

['filecopy.py', 't1.txt', 't2.txt'] 

文件t2.txttext2已经写好了。请注意,sys.argv[0]可能包含完整路径名而不仅仅是文件名(这取决于操作系统)。