簡體   English   中英

如何從 python 中的文件中讀取給定數量的字節?

[英]How can I read a given amount of bytes from a file in python?

所以我正在做一個學校作業,我必須編寫一個服務器(使用 C)和一個客戶端(使用 python)。

客戶端必須能夠接受諸如“put-cfg”之類的命令,這使得它能夠將他的引導文件發送到服務器。 為了發送文件,我被告知使用給定的 pdu,其中 package 的“數據”部分正好包含 150 個字節。 所以為了讓它工作,在某些時候我必須讀取引導文件並將其拆分為 150 字節塊(或直接讀取 150 字節塊)。

我知道通過使用.read(size)我可以選擇我想從文件中讀取多少字節,但我的問題是,即使我知道如何讀取文件直到它結束(通過for line in file:在到達文件末尾之前,我不知道如何以給定的大小(150 字節)讀取它。 我會以某種方式接近它:

stream = []
stream += [file.read(150)]
for stream in file:
    stream += [file.read(150)]

我會這樣做,以便將文件保存在“150 字節文件”數組中,這樣我就可以在 pdu 上發送每個數組位置。

我看到的問題是我不認為for stream in file:會起作用,這就是我無法做到的,以 150 字節塊讀取文件直到結束,我怎么知道我已經達到結尾? 第一次在這里發帖,我已經盡力不讓它成為一個愚蠢的問題,任何幫助將不勝感激。

PD:引導文件是一個文本文件。

如果你到達行尾,你只會得到一個空字符串。 行尾前的最后一個塊將具有字符的 rest,因此如果剩下 120 個字符,即使塊大小為 150,您也會得到一個 120 個字符的字符串)。

所以,我們可以把你的代碼放在一個無限循環中,當字符串為空時打破它。

stream = []
while True:
    block = file.read(150)
    if not block:
        break
    stream += [block]

暫無
暫無

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

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