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

发布于 2021-01-29 15:09:16

有人可以解释为什么我想要的结果“ 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”,则不会出现

关注者
0
被浏览
113
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    默认情况下,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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看