5
我有打开并从二进制读取文件的代码。将stdin读为二进制
with open (file, mode="rb") as myfile:
message_string=myfile.read()
myfile.close
我现在需要从stdin中读取相同的内容。但我无法弄清楚如何读取二进制文件。
该错误仅表示字节字符串。
有什么建议吗?
我有打开并从二进制读取文件的代码。将stdin读为二进制
with open (file, mode="rb") as myfile:
message_string=myfile.read()
myfile.close
我现在需要从stdin中读取相同的内容。但我无法弄清楚如何读取二进制文件。
该错误仅表示字节字符串。
有什么建议吗?
在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”。看到这里的解决方案:http://stackoverflow.com/questions/2850893/reading-binary-data-from-stdin –
请参阅https://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']' –