读取 Python 中的 .bin 或 .dat 文件
Reading .bin or .dat file in Python
我正在生成一个二进制文件。我使用 hexdump 打开它,它看起来像下面这样
enter image description here
但是当我尝试使用 python 读取这个文件时
file = open("lfsr.bin","rb")
data = file.read(10)
print data
正在打印 blank/empty
但如果我这样做
print repr(data)
它打印
'\x00\x00\x00\x00\x01\x00\x01\x01\x01\x01'
如何以 1023 的块读取此文件?这个文件实际上是一个o/p的PRN生成器代码。
正如您所见,文件中的前 10 个字节(或图像中的所有字节)是 0x00
或 0x01
。在 ASCII 中,这些都是 non-printable 个字符,因此如果您尝试 print
它们作为字符串,您将看不到任何内容 - 但会读取字节。用 repr
打印它是有效的,因为 repr
给你一个 "string representation of the object",所以你可以在那里看到实际的字节数。
按照建议,只需执行 data = file.read(1023)
从文件中读取一个 1023 字节的块。
注意:这在 Python 3 中有所减少,其中从二进制文件读取的数据作为 bytes
对象返回,而 str
是具有解码的不同类型字符串表示。在这种情况下,打印 data
会显示类似于您从 Python 中的 repr
得到的内容,因为 bytes
对象不假定代表文本,因此最好显示它们的内容,即使它包含 non-printable 个字符。
我正在生成一个二进制文件。我使用 hexdump 打开它,它看起来像下面这样 enter image description here
但是当我尝试使用 python 读取这个文件时
file = open("lfsr.bin","rb")
data = file.read(10)
print data
正在打印 blank/empty 但如果我这样做
print repr(data)
它打印
'\x00\x00\x00\x00\x01\x00\x01\x01\x01\x01'
如何以 1023 的块读取此文件?这个文件实际上是一个o/p的PRN生成器代码。
正如您所见,文件中的前 10 个字节(或图像中的所有字节)是 0x00
或 0x01
。在 ASCII 中,这些都是 non-printable 个字符,因此如果您尝试 print
它们作为字符串,您将看不到任何内容 - 但会读取字节。用 repr
打印它是有效的,因为 repr
给你一个 "string representation of the object",所以你可以在那里看到实际的字节数。
按照建议,只需执行 data = file.read(1023)
从文件中读取一个 1023 字节的块。
注意:这在 Python 3 中有所减少,其中从二进制文件读取的数据作为 bytes
对象返回,而 str
是具有解码的不同类型字符串表示。在这种情况下,打印 data
会显示类似于您从 Python 中的 repr
得到的内容,因为 bytes
对象不假定代表文本,因此最好显示它们的内容,即使它包含 non-printable 个字符。