Py学习  »  Python

在Python中读取协议缓冲文件

Ira H. • 6 年前 • 1995 次点击  

我正在请求公共交通API进行数据分析。有几个文件是JSON格式的,很容易处理;但是,有些文件是 .protobuf

我很好奇如何将这些文件解析为人类可读的格式。例如,如果我打开 .原型

1"$
+(B���uC-(�̉�B
1462;
2"6

    741127020 *F
�ZB�����C-(�̉�B
1583<
3"7

    719255020 *10
K�B�8��C-FH@(�̉�B
1220<
4"7

谢谢!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53143
文章 [ 1 ]  |  最新文章 6 年前
Mark Meyer
Reply   •   1 楼
Mark Meyer    6 年前

Protobuffer是一种二进制格式,因此在原始状态下是不可读的。要读它,去拿 python bindings from Google 安装时使用:

pip install --upgrade gtfs-realtime-bindings

from google.transit import gtfs_realtime_pb2
import urllib.request 

feed = gtfs_realtime_pb2.FeedMessage()
pb_url = "http://someURL/someFile.pb"

with urllib.request.urlopen(pb_url) as response:
    feed.ParseFromString(response.read())
    print(feed)

这会给你类似的东西:

header {
  gtfs_realtime_version: "1.0"
  incrementality: FULL_DATASET
  timestamp: 1579313685
}
entity {
  id: "10-abc-O-1"
  trip_update {
    trip {
      trip_id: "10-1622-O-1"
    }
...