Ich bin ein bisschen süchtig danach, also werde ich es als Memorandum aufschreiben.
Die folgenden zwei Methoden werden unterstützt, um Proto in Python zu konvertieren.
$ python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. helloworld.proto
from grpc.tools import protoc
protoc.main((
'',
'-I.',
'--python_out=.',
'--grpc_python_out=.',
'helloworld.proto',
))
Aus der Schlussfolgerung ergibt sich keine Funktion wie "Verzeichnis angeben und Proto rekursiv lesen", und es ist erforderlich, Proto einzeln als Argument anzugeben. Daher ist es nicht realistisch, dies in der Shell zu tun, und es kann angenommen werden, dass die Verwendung von "glob.glob ()" von Python eine Verknüpfung ist.
from grpc.tools import protoc
protoc.main((
'', #Magie
'-I.', #Angabe des Verzeichnisses zum Scannen von Proto--proto_path=***Vielleicht
'--python_out=.', # ***_pb2.Lagerort von py
'--grpc_python_out=.', # ***_pb2_grpc.Es scheint fast keinen Vorteil zu geben, es vom Speicherort von py ↑ zu trennen
'helloworld.proto', #Angabe der zu konvertierenden Protodatei
))
Das heißt, übergeben Sie den Taple an "protoc.main ()".
Alles was Sie tun müssen, ist mehr und mehr zu Ihrem Hintern hinzuzufügen.
from grpc.tools import protoc
protoc.main((
'',
'-I.',
'--python_out=.',
'--grpc_python_out=.',
'helloworld.proto',
'hoge.proto',
'fuga.proto',
'poyo.proto',
'piyo.proto'
))
Wie oben erwähnt, ist die Verwendung von "glob.glob ()" reibungslos.
from grpc.tools import protoc
import glob
protos = glob.glob('hoge/**/*.proto', recursive=True)
protoc.main((
'',
'-I.',
'--python_out=.',
'--grpc_python_out=.',
'helloworld.proto',
*protos
))
Was ist *
! ?? Wenn Sie denken, können Sie mit "Python Variable Length Argument" googeln.
Einfach ausgedrückt ist es eine praktische Methode, die durch Hinzufügen eines Sternchens am Anfang der Liste auf mehrere Variablen erweitert wird.
Recommended Posts