如何在非阻塞模式下讀取二進制文件或文本文件的內容?讀取非阻塞文件
對於二進制文件:當我open(filename, mode='rb')
,我得到io.BufferedReader
的實例。文檔堡壘io.BufferedReader.read
says:
閱讀並返回大小字節,或者如果大小沒有給出或負,直到EOF或者如果讀取調用將在非阻塞模式阻塞。
很明顯,一個簡單的open(filename, 'rb').read()
處於阻塞模式。令我驚訝的是,在io
關於如何選擇非阻塞模式的文檔中,我找不到任何解釋。
對於文本文件:當我open(filename, mode='rt')
,我得到io.TextIOWrapper
。我假設相關文檔是read
在其基類中的文檔,io.TextIOBase
;和according to those docs,似乎根本沒有辦法做到非阻塞讀取:
從流中讀取並返回最多大小字符作爲單個str。如果大小爲負值或無,則讀取直到EOF。
不知道,如果你需要使用在較低水平來做到這一點'os.O_NONBLOCK' –
請告訴我爲什麼低估了我的答案?它不相關嗎? – Juggernaut
@Amin Etesamian我沒有投票,我不確定爲什麼其他讀者不喜歡它。這似乎相關,雖然我不知道aiofiles圖書館。 – max