如何从 python 中的文件中读取给定数量的字节?

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

所以我正在做一项学校作业,我必须编写服务器(使用 C)和客户端(使用 python)的代码。

客户端必须能够接受诸如“put-cfg”之类的命令,以便将其引导文件发送到服务器。为了发送文件,我被告知使用给定的 pdu,其中包的“数据”部分恰好包含 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: 引导文件是一个文本文件。

如果到达行尾,您只会得到一个空字符串。行尾之前的最后一个块将包含其余字符,因此如果还剩 120 个字符,即使块大小为 150,您也会得到一个 120 个字符的字符串。

因此,我们可以将您的代码置于无限循环中,当字符串为空时中断它。

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