为什么Popen.communicate()返回b'hi \ n'而不是'hi'? [英] Why does Popen.communicate() return b'hi\n' instead of 'hi'?

查看:89
本文介绍了为什么Popen.communicate()返回b'hi \ n'而不是'hi'?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人可以解释为什么我要的结果"hi"以字母"b"开头并以换行符开头吗?

Can someone explain why the result I want, "hi", is preceded with a letter 'b' and followed with a newline?

我正在使用 Python 3.3

>>> import subprocess
>>> print(subprocess.Popen("echo hi", shell=True,
                           stdout=subprocess.PIPE).communicate()[0])
b'hi\n'

如果我使用python 2.7运行它,则不会显示此额外的'b'

This extra 'b' does not appear if I run it with python 2.7

推荐答案

echo命令默认返回换行符

The echo command by default returns a newline character

与此比较:

print(subprocess.Popen("echo -n hi", \
    shell=True, stdout=subprocess.PIPE).communicate()[0])

对于字符串前面的 b ,它指示它是一个字节序列,与Python 2.6+中的普通字符串等效.

As for the b preceding the string it indicates that it is a byte sequence which is equivilent to a normal string in Python 2.6+

http://docs.python.org/3/reference/lexical_analysis. html#literals

这篇关于为什么Popen.communicate()返回b'hi \ n'而不是'hi'?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆