subprocess.call的问题

11 python subprocess

在我当前的工作目录中,我有dir ROOT /里面有一些文件.

我知道我可以执行cp -r ROOT/* /dst,我也没有问题.

但是如果我打开我的Python控制台并写下这个:

import subprocess
subprocess.call(['cp', '-r', 'ROOT/*', '/dst'])
Run Code Online (Sandbox Code Playgroud)

它不起作用!

我有这个错误: cp: cannot stat ROOT/*: No such file or directory

你能帮助我吗?

che*_*box 10

刚尝试做类似的事情时遇到了这个问题.

*不会扩展为文件名

究竟.如果查看手册页,cp可以使用任意数量的源参数调用它,并且可以使用-t开关轻松更改参数的顺序.

import glob
import subprocess
subprocess.call(['cp', '-rt', '/dst'] + glob.glob('ROOT/*'))
Run Code Online (Sandbox Code Playgroud)


Ali*_*ell 7

尝试

subprocess.call('cp -r ROOT/* /dst', shell=True)
Run Code Online (Sandbox Code Playgroud)

注意在这里使用单个字符串而不是数组.

或者使用listdircopy构建自己的实现


小智 4

不会*扩展到文件名。这是shell 的一个功能。这里你实际上想要复制一个名为 *.txt 的文件。subprocess.call()与参数 一起使用shell=True