[英]Problem with subprocess.call
在我当前的工作目录中,我的目录是ROOT /,其中包含一些文件。
我知道我可以执行cp -r ROOT/* /dst
并且没有问题。
但是,如果我打开Python控制台并编写以下代码:
import subprocess
subprocess.call(['cp', '-r', 'ROOT/*', '/dst'])
没用!
我有此错误: cp: cannot stat ROOT/*: No such file or directory
你能帮助我吗?
刚尝试做类似的事情时碰到了这一点。
*不会扩展为文件名
究竟。 如果查看cp
的手册页,则可以使用任意数量的源参数调用它,并且可以使用-t
开关轻松更改参数的顺序。
import glob
import subprocess
subprocess.call(['cp', '-rt', '/dst'] + glob.glob('ROOT/*'))
*
不会扩展为文件名。 这是外壳的功能。 在这里,您实际上要复制一个名为*的文件。 将subprocess.call()
与参数shell=True
。
提供命令作为列表,而不是字符串+ list。
以下两个命令相同:
First Command:-
test=subprocess.Popen(['rm','aa','bb'])
Second command:-
list1=['rm','aa','bb']
test=subprocess.Popen(list1)
因此,要复制多个文件,需要使用blob获取文件列表,然后将“ cp”添加到列表的开头,将目的地添加到列表的末尾,并将列表提供给subprocess.Popen()。
喜欢:-
list1=blob.blob("*.py")
list1=['cp']+list1+['/home/rahul']
xx=subprocess.Popen(list1)
它将完成工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.