当前位置: 首页 > 面试题库 >

为什么Popen.communicate()返回b'hi \ n'而不是'hi'?

唐向荣
2023-03-14
问题内容

有人可以解释为什么我想要的结果“ 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



 类似资料: