我正在尝试使用以下代码从bin文件中读取字节:
with open("filedata.bin","rb") as file:
data = file.read()
for byte in data:
print byte
这很好用,但问题是它花费的时间太长(大约4分钟)。目的是读取bin文件的任何字节,然后通过串行接口发送它们。
我的文件是101 KB。直到现在,我还没有通过串行接口发送任何数据。因此,这不是问题。我使用“打印字节”验证了python shell上的速率。它将我的第一个字节打印到最后一个字节。
有人知道我如何更快地读取字节吗?
答案 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