繁体   English   中英

在 Python 中读取协议缓冲区文件

[英]Reading a protocol buffer file in Python

我正在向公共交通 API 发出请求以进行数据分析。 几个文件都是JSON格式,方便处理; 但是,有些文件是.protobuf格式。

我很好奇如何将这些文件解析为人类可读的格式。 例如,如果我在文本编辑器中打开.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

谢谢!

Protobuffer 是一种二进制格式,因此它在原始状态下不是人类可读的。 要阅读它,请从 Google获取python 绑定并安装:

pip install --upgrade gtfs-realtime-bindings

一旦你有了这些,你就可以很容易地下载 pb 文件或在本地读取它:

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"
    }
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM