我在python 2.7中使用子过程模块遇到问题。 问题是当我尝试在命令中使用<<<时。
这是一个简化的示例:
#!/usr/bin/python
import subprocess
command="cat <<< 'hi there'"
print subprocess.check_output(command.split(" "))
结果:
cat: '<<<': Aucun fichier ou dossier de ce type
cat: "'hi": Aucun fichier ou dossier de ce type
cat: "there'": Aucun fichier ou dossier de ce type
Traceback (most recent call last):
File "test.py", line 6, in <module>
print subprocess.check_output(command.split(" "))
File "/usr/lib/python2.7/subprocess.py", line 219, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['cat', '<<<', "'hi", "there'"]' returned non-zero exit status 1
我对这个结果感到困惑。为什么在尝试使用<<<时子进程有问题?我所有的bash命令都有效,除了当我使用“ <<<”:/
时答案 0 :(得分:0)
<<<
运算符是bash构造。您没有在命令中使用bash,因此它将不起作用。尝试添加shell=True
。
此外,如果在空格中分割命令,则会得到非常奇怪的参数(请检查错误消息)。如果必须使用bash解释字符串,请不要将其弄乱:
#!/usr/bin/python
import subprocess
command="cat <<< 'hi there'"
print subprocess.check_output(command, shell=True, executable="/bin/bash")