为什么Popen.communicate()返回b'hi \ n'而不是'hi'?
有人可以解释为什么我想要的结果“ 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”,则不会出现
-
默认情况下,echo命令返回换行符
与此比较:
print(subprocess.Popen("echo -n hi", \ shell=True, stdout=subprocess.PIPE).communicate()[0])
至于字符串前面的 b ,则表明它是一个字节序列,等效于Python 2.6+中的常规字符串
http://docs.python.org/3/reference/lexical_analysis.html#literals