以下代码,但是当我运行“ cp -rf /tmp/test.py时,我发现了为什么会发生错误” / tmp / blacktest /”,效果很好
>>> subprocess.call(['cp','-rf','/tmp/test\.py','/tmp/blacktest/'],shell=True)
cp: missing file operand
Try 'cp --help' for more information.
1
答案 0 :(得分:0)
简短答案: 删除shell = True(也删除“。”之前的反斜杠,为什么需要它?),如:
subprocess.call(['cp','-rf','/tmp/test.py','/tmp/blacktest/']
建议:使用python工具复制文件
import shutil
shutil.copyfile(src, dst)
好答案:
shell = True会在命令前加上/ bin / sh -c
这意味着-c后面的FIRST参数是使用/ bin / sh执行的命令。您的第一个参数是cp
,它然后被单独执行,不带任何参数 ...这就是为什么您看到错误消息的原因。
如果您告诉它所有参数实际上都是用于Shell的单个命令,则仍可以使用shell = true来运行:
subprocess.call(['cp -rf q.py w'], shell=True)