簡體   English   中英

Python f.read沒有讀取正確的字節數

[英]Python f.read not reading the correct number of bytes

我的代碼應該讀取4個字節但有時只讀3個:

f = open('test.sgy', 'r+')
f.seek(99716)
AAA = f.read(4)
BBB = f.read(4)
CCC = f.read(4)
print len(AAA)
print len(BBB)
print len(CCC)

exit()

並且該程序返回:4 3 4

我究竟做錯了什么? 謝謝!

你假設read做了它不做的事情。 正如其文檔告訴您:

read(...)
    read([size]) -> read at most size bytes, returned as a string.

最多讀取size字節

如果您需要精確的 size字節,則必須創建包裝函數。


以下是您可以調整的(未經過全面測試的)示例:

def read_exactly( fd, size ):
    data=""
    remaining= size
    while remaining>0:      #or simply "while remaining", if you'd like
        newdata= fd.read(remaining)
        if len(newdata)==0: #problem
            raise IOError("Failed to read enough data")
        data+=newdata
        remaining-= len(newdata)
    return data

正如Mark Dickinson在評論中提到的,如果您使用的是Windows,請確保您正在以二進制模式閱讀 - 否則您可能會錯誤地read (二進制)數據。

暫無
暫無

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

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