【发布时间】:2013-02-28 17:34:44
【问题描述】:
有人能解释一下为什么我想要的结果“hi”前面有一个字母“b”,后面有一个换行符吗?
我正在使用 Python 3.3
>>> import subprocess
>>> print(subprocess.Popen("echo hi", shell=True,
stdout=subprocess.PIPE).communicate()[0])
b'hi\n'
如果我使用 python 2.7 运行它,则不会出现这个额外的“b”
【问题讨论】:
-
你用的是什么版本的 Python?
-
不确定'b',但换行是因为
echo hi打印hi\r\n。为避免这种情况,您可以在末尾添加 .strip() 或类似的修复。 -
你可以在这里使用
check_output()而不是.communicate():print(subprocess.check_output("echo hi", shell=True, universal_newlines=True), end="")
标签: python subprocess popen