Как открыть / просмотреть расширение файла .proto

Я работаю над проектом с открытым исходным кодом (https://github.com/google/science-journal/tree/master/OpenScienceJournal). С помощью этого приложения я могу записать эксперимент. Записанные эксперименты хранятся с расширением .proto. Я попытался скомпилировать их для создания классов, но не смог.

Есть ли способ открыть такие файлы?


person blockByblock    schedule 16.07.2018    source источник
comment
Вам нужны файлы схемы protobuf и компилятор схемы; немного покопавшись в этом репозитории, похоже, что его настройка Gradle уже должна делать то, что нужно.   -  person David Maze    schedule 16.07.2018
comment
Почему мой вопрос отклонен?   -  person blockByblock    schedule 16.07.2018


Ответы (1)


В протоколах-буферах файлы .proto обычно представляют собой текстовую схему DSL, которая описывает сообщения, а не данные; однако, возможно, что эти файлы действительно содержат двоичные данные (просто ... необычно). Еще раз проверьте файлы: если они выглядят так:

message Foo {
   int32 bar = 1;
   // etc
}

тогда это схема; если он выглядит двоичным, это, вероятно, данные.

Что касается того, как это читать: самый простой вариант - это уже иметь схему. Если вы этого не сделаете, данные будут технически неоднозначными - вы, вероятно, сможете перепроектировать их, изучив данные, но это может быть неудобно. Для этой цели могут быть полезны такие инструменты, как https://protogen.marcgravell.com/decode.

Получив схему и данные, вы должны:

  • создать необходимые заглушки на выбранной вами платформе из схемы (https://protogen.marcgravell.com/ может здесь будет полезно)
  • затем: используйте API десериализации библиотеки protbuf для выбранной платформы, чтобы загрузить данные в объектную модель.
  • наконец: проверьте объектную модель, теперь заполненную данными
person Marc Gravell    schedule 19.07.2018
comment
Есть идеи, как обрабатывать их с помощью Python? - person Mark; 14.07.2020
comment
@Mark поместил схему .proto через protoc (используйте protogen.marcgravell.com), указав вывод python; и следовать руководству разработчика для Python? developers.google.com/protocol-buffers/docs/pythontutorial - person Marc Gravell; 14.07.2020