Shutil.copy 不会复制
Shutil.copy Won't Copy
编程新手,通过 python 和 "Learning Python the Hard Way."
深入研究
出于某种原因,我无法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 'test1' is not defined
但是,将 test1 和 test2 放入 a 和 b 的变体没有成功运行。我试过测试,test1.txt,设置 test1 变量然后插入它,没有。
您应该使用 shutil.copy(a, b)
而不是 shutil.copy(sys.argv[a], sys.argv[b])
。显然,a
和 b
的值可能是字符串,可能是路径名,而不是数字,如果它们是 sys.argv
列表的索引,那么人们会期望它们。
如果存在名为 test1
的文件或目录,则以下内容应该有效:
a = "test1"
b = "test2"
shutil.copy(a, b)
sys.argv
returns 一个列表。 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.txt
和 text2
已经写入。请注意 sys.argv[0]
可能包含完整路径名而不仅仅是文件名(这取决于 OS)。
编程新手,通过 python 和 "Learning Python the Hard Way."
深入研究出于某种原因,我无法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 'test1' is not defined
但是,将 test1 和 test2 放入 a 和 b 的变体没有成功运行。我试过测试,test1.txt,设置 test1 变量然后插入它,没有。
您应该使用 shutil.copy(a, b)
而不是 shutil.copy(sys.argv[a], sys.argv[b])
。显然,a
和 b
的值可能是字符串,可能是路径名,而不是数字,如果它们是 sys.argv
列表的索引,那么人们会期望它们。
如果存在名为 test1
的文件或目录,则以下内容应该有效:
a = "test1"
b = "test2"
shutil.copy(a, b)
sys.argv
returns 一个列表。 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.txt
和 text2
已经写入。请注意 sys.argv[0]
可能包含完整路径名而不仅仅是文件名(这取决于 OS)。