簡體   English   中英

相對於當前位置的file.seek()和read()

[英]file.seek() and read() relative to the current position

我正在嘗試將文件的一部分讀取到字節數組中,但沒有成功。 我要多留一雙眼睛,這很明顯。

示例文件段:

...line one\nline two\nline three\nfourth line\n
                                   ^        
                                   |___ fp.tell() 

fp.seek(-1,os.SEEK_CUR)print fp.read(1)輸出(如預期) \\n

另一方面,如果我執行fp.seek(-2,os.SEEK_CUR) ,而不是預期的e\\n輸出是\\nf

之后,我嘗試使用fp.seek(-3,os.SEEK_CUR)print fp.read(3) ,輸出為e\\nf

換句話說,無論嚴格地否定指針移動,字節都是“雙向”讀取的(從左到右)。 我確定我在這里錯過了一些東西。 有什么提示嗎?

編輯:在Windows上

您是否在Windows上以文本模式讀取文件(默認情況下,除非在模式字符串中用b調用open()否則默認情況下)? 如果是這樣,它可能具有'\\r\\n'換行符,它們是兩個字節大,但是在閱讀時通過剝離'\\r'轉換為'\\n' 來自help(file.seek) :“如果以文本模式打開文件,則只有tell()返回的偏移量是合法的。”

這將解釋您的症狀,因為實際上您正在讀'\\n''\\r\\nf''e\\r\\nf' ,而在每種情況下都刪除了任何'\\r'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM