将stdin读为二进制

BeM*_*end 18 python stdin

我有代码打开并从二进制文件中读取文件.

with open (file, mode="rb") as myfile:
    message_string=myfile.read()
    myfile.close
Run Code Online (Sandbox Code Playgroud)

我现在需要从stdin读取相同的内容.但我无法弄清楚如何阅读二进制文件.

该错误仅表示字节字符串.
有什么建议?

ick*_*fay 31

在Python 3中,如果要从中读取二进制数据stdin,则需要使用其buffer属性:

import sys

data = sys.stdin.buffer.read()
Run Code Online (Sandbox Code Playgroud)

在Python 2上,sys.stdin.read()已经返回一个字节串; 没有必要使用buffer.

  • 有关Windows上的正确解决方案,请参阅/sf/answers/2725752431/. (4认同)
  • 关于Python 2不正确.默认情况下,它以文本模式读取.例如,在Windows上,输入stdin的"a\r \nb"这样的文件将显示为"a \nb".请参阅此处获取解决方案:http://stackoverflow.com/questions/2850893/reading-binary-data-from-stdin (2认同)
  • @Clément:他们说“在 Windows 上”。`$` 表明你没有在 Windows 上运行它。(除非您使用的是用于 Linux 的 Windows 子系统,出于这些目的,我们可以认为它不是 Windows。) (2认同)