python从bin文件中逐字节读取时间太长

时间:2018-10-25 15:01:10

标签: python binary byte bin

我正在尝试使用以下代码从bin文件中读取字节:

with open("filedata.bin","rb") as file:
   data = file.read()
   for byte in data:
         print byte

这很好用,但问题是它花费的时间太长(大约4分钟)。目的是读取bin文件的任何字节,然后通过串行接口发送它们。

我的文件是101 KB。直到现在,我还没有通过串行接口发送任何数据。因此,这不是问题。我使用“打印字节”验证了python shell上的速率。它将我的第一个字节打印到最后一个字节。

有人知道我如何更快地读取字节吗?

1 个答案:

答案 0 :(得分:0)

在不带任何参数的情况下使用file.read()时,您会立即将整个文件读入内存。这通常很慢。

为加快速度,您将希望一次读取几个字节的文件。

您可以通过指定要读取的字节数来执行此操作,例如:

with open("myfile", "rb") as f:
    byte = f.read(1)
    while byte:
        # do something with the byte
        byte = f.read(1)

更高级的方法是使用iter函数:

for i in iter(lambda x: f.read(1), b""):
    # do something with the byte