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']' –