[英]How to read a file containing ctrl-Z when stdin is redirected from a file?
我的python腳本中有這樣一行:
data = sys.stdin.read()
然后我在Windows上使用文件重定向運行腳本:
>> python test.py <binary_file
如果binary_file包含在Windows中為EOF
\\x1a
(ctrl-Z),則數據將僅包含\\x1a
之前的字符串。 我知道這可以通過open("...", "rb")
修復為常規文件。
我如何處理sys.stdin
?
我的下一步是嘗試fileinput模塊,但我的直覺是cmd.exe
(或處理管道的代碼)真正處理流,查找\\0x1a
字節\\0x1a
送給你一個EOF。
如果是這樣的話,你無能為力; 操作系統根本不會讓你讀過這個字節。 沒有辦法將stdin
“切換”到二進制模式,因為此句柄由運行時或操作系統打開,然后傳遞給Python。
作為一種解決方法,您可以嘗試安裝Cygwin或MSys ,它可以為您提供真正的shell(而不是在20世紀80年代創建的錯誤模擬)。
或者嘗試PowerShell 。 如果你很幸運,他們沒有在那里重新實現這個bug。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.