【问题标题】:Read stdin as binary [duplicate]将标准输入读取为二进制[重复]
【发布时间】:2015-11-23 18:54:53
【问题描述】:

我有从二进制文件中打开和读取文件的代码。

with open (file, mode="rb") as myfile:
    message_string=myfile.read()
    myfile.close

我现在需要做同样的事情从标准输入读取。但我不知道如何阅读二进制文件。

错误仅显示字节字符串。
有什么建议吗?

【问题讨论】:

    标签: python stdin


    【解决方案1】:

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

    import sys
    
    data = sys.stdin.buffer.read()
    

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

    【讨论】:

    • Python 2 不正确。它默认以文本模式读取。例如。在 Windows 上,像“a\r\nb”这样输入标准输入的文件将显示为“a\nb”。请参阅此处获取解决方案:stackoverflow.com/questions/2850893/…
    • 请参阅stackoverflow.com/a/38939320/239247,了解 Windows 上的正确解决方案。
    • @EvgeniSergeev 你真的试过了吗? $ printf "a\r\nb\rc\r" | python2.7 -c 'import sys; print(sys.stdin.readlines())' 产生 ['a\r\n', 'b\rc\r']
    • @Clément:他们说“在 Windows 上”。 $ 建议您不在 Windows 上运行它。 (除非您使用的是用于 Linux 的 Windows 子系统,出于这些目的,我们可以认为它不是 Windows。)
    猜你喜欢
    • 2010-12-08
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多