Я пытаюсь читать и анализировать данные GTFS в реальном времени из метро Нью-Йорка в Python.До сих пор я успешно использовал gtfs-realtime.proto
и nyct-subway.proto
для генерации правильных классов Python и анализировал данные protobuf в объекты Python.
Моя проблема возникает при попытке доступа к определенным полям в этих объектах.Например, заголовок (feed.header
) выглядит следующим образом:
gtfs_realtime_version: "1.0"
incrementality: FULL_DATASET
timestamp: 1533111586
[nyct_feed_header] {
nyct_subway_version: "1.0"
trip_replacement_period {
route_id: "A"
replacement_period {
end: 1533113386
...
Я могу получить доступ к первым трем атрибутам, используя точечный доступ, но не nyct_feed_header
.Я подозреваю, что это потому, что он является частью nyct-subway.proto
расширения, в то время как остальные три являются частью оригинала.
Я нашел этот атрибут доступным в feed.header.ListFields (), но так как это возвращаетсписок пар (имя, атрибут), доступ к которым в лучшем случае неудобен.
Почему атрибуты из расширений не доступны через точку доступа, как и остальные?Есть ли лучший или более элегантный способ доступа к ним, чем с помощью ListFields?