在Python中读取.bin或.dat文件

时间:2018-02-28 14:18:30

标签: python binaryfiles gnuradio gnuradio-companion lfsr

我正在生成一个二进制文件。我用hexdump打开它,它看起来如下所示 enter image description here

但是当我尝试在python中使用时读取此文件 file = open("lfsr.bin","rb") data = file.read(10) print data

它的打印空白/空白 但是如果我做的话

print repr(data)

打印

'\x00\x00\x00\x00\x01\x00\x01\x01\x01\x01'

如何以1023块的形式阅读此文件?该文件实际上是PRN生成器代码的o / p。

1 个答案:

答案 0 :(得分:1)

您可以看到文件中的前10个字节(或图像中显示的所有字节)都是0x000x01。在ASCII中,这些都是不可打印的字符,因此如果您尝试将print字符串作为字符串,您将无法看到任何内容 - 但会读取字节数。使用repr打印它是有效的,因为repr为您提供了对象"的字符串表示形式,因此您可以看到其中的实际字节。

根据建议,只需执行data = file.read(1023)即可从文件中读取1023个字节的块。

注意:在Python 3中,这有点不那么令人困惑,其中从二进制文件读取的数据作为bytes对象返回,str是具有解码字符串表示的不同类型。在这种情况下,打印data将显示类似于您从Python中repr得到的内容,因为bytes对象不会被假定为代表文本,因此即使是显示其内容也是首选它包含不可打印的字符。