python 中读取二进制文件时的偏移量

Offset when reading binary file in python

我有一个 OSM PBF file 正在尝试解析。格式标准规定,并在 Sublime Text 中阅读,这已得到确认,前四个字节是:

0000 000d

那么,如果我 运行 一个非常简单的 Python 程序:

PBFfile = open(r'MyFilePath.osm.pbf')
PBFfile.read(4)[3].encode('hex')

return 0a(序列中的下一个字节)不是预期的 0d 吗?有没有明显的解释?

我在 Windows 7,Python 2.7.5 32 位。

您正在 "text mode" 中打开文件,这会导致一些不需要的换行符处理 (docs)。

要解决您的问题,请以二进制模式打开它,例如:

PBFfile = open(r'MyFilePath.osm.pbf', 'rb')