我想将 bash 命令的输出放在一个变量中,但我得到一个空字符串。
import subprocess
out = subprocess.check_output("echo hello world", shell=True)
print out + ' ok'
输出是:
hello world
ok
代替:
hello world
hello world ok
为什么会这样?
请您参考如下方法:
echo 的输出包括一个换行符。结果没有写入您的终端,输出由check_output()捕获,但您随后打印包括换行符在内的输出:
>>> import subprocess
>>> out = subprocess.check_output("echo hello world", shell=True)
>>> out
'hello world\n'
在打印时在两个单独的行中为您提供 'hello world' 和 'ok'。
之后您可以删除换行符;使用 str.strip()将从字符串的开头和结尾删除所有 空格,例如:
print out.strip() + ' ok'
在某些 shell 上,echo 命令使用 -n 开关来抑制换行符:
echo -n hello world
