【发布时间】:2015-11-23 18:54:53
【问题描述】:
我有从二进制文件中打开和读取文件的代码。
with open (file, mode="rb") as myfile:
message_string=myfile.read()
myfile.close
我现在需要做同样的事情从标准输入读取。但我不知道如何阅读二进制文件。
错误仅显示字节字符串。
有什么建议吗?
【问题讨论】:
我有从二进制文件中打开和读取文件的代码。
with open (file, mode="rb") as myfile:
message_string=myfile.read()
myfile.close
我现在需要做同样的事情从标准输入读取。但我不知道如何阅读二进制文件。
错误仅显示字节字符串。
有什么建议吗?
【问题讨论】:
在Python 3中,如果你想从stdin读取二进制数据,你需要使用它的buffer属性:
import sys
data = sys.stdin.buffer.read()
在 Python 2 上,sys.stdin.read() 已经返回一个字节字符串;不需要使用buffer。
【讨论】:
$ printf "a\r\nb\rc\r" | python2.7 -c 'import sys; print(sys.stdin.readlines())' 产生 ['a\r\n', 'b\rc\r']
$ 建议您不在 Windows 上运行它。 (除非您使用的是用于 Linux 的 Windows 子系统,出于这些目的,我们可以认为它不是 Windows。)