用protobuf编译时是否可以循环,将.proto文件转换为.py文件?

Is it possible to loop when compiling with protobuf, converting .proto files to .py files?

我正在使用 TensorFlow 为对象识别项目设置环境。在编译一些 .proto 文件时,我碰壁了。努力找到文件的路径/然后找到 protobuf 应用程序的路径/然后继续为每个原始文件命令 -- python_out=.

我在做什么/想做什么: 按照这个 (https://www.edureka.co/blog/tensorflow-object-detection-tutorial/#object) 关于 edureka 的教程,我设法做到了:

命令

C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/anchor_generator.proto --python_out=.
C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/argmax_matcher.proto --python_out=.
C:\Users\yourusername\Desktop\TensorFlow\protoc-3.5.1-win32\bin\protoc object_detection/protos/bipartite_matcher.proto --python_out=.

..依此类推,直到完成 protos 文件夹中的所有项目

所以这基本上是允许我在每个原型文件下编译为一个 .py 文件。我确实碰巧有更多的事情要做和指挥,所以为了提高工作效率——我如何循环它以通过需要编译的原型文件一遍又一遍地完成完全相同的任务?

我能够按照以下步骤解决此问题:

  1. 在命令行中导航到 Tensorflow\models\research 文件夹(路径可能因您的情况而异)
  2. 输入此命令for %i in (object_detection\protos\*.proto) do protoc %i --python_out=.

它将为 Tensorflow\models\research 文件夹中的每个 .proto 文件创建 .py 文件,如此 screenshot

希望这对您有所帮助。

就我而言,进入研究目录后,我尝试了 protoc object_detection/protos。 然后,出现了这个错误:

Command 'protoc' not found, but can be installed with:

sudo snap install protobuf           # version 3.6.0, or
sudo apt  install protobuf-compiler

See 'snap info protobuf' for additional versions.`

因此,我通过键入以下内容来安装必要的软件包:sudo apt install protobuf-compiler

其次是:protoc object_detection/protos/*.proto --py

最后,您可以查看"object_detection"文件夹,您可以看到该文件夹​​中的每个文件都生成了一个.py文件。