Konvertieren Sie mehrere Protodateien gleichzeitig mit Python

Ich bin ein bisschen süchtig danach, also werde ich es als Memorandum aufschreiben.

Was du machen willst

Was ich getan habe

Rückblick auf den Inhalt von Hands-On

Die folgenden zwei Methoden werden unterstützt, um Proto in Python zu konvertieren.

Schlagen Sie direkt von der Schale

$ python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. helloworld.proto

Rufen Sie aus Python heraus

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.

Überprüfen Sie die Argumente von protoc.main ()

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 ()".

Beim Schreiben fest

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'
))

Bei Verwendung einer Liste

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

Konvertieren Sie mehrere Protodateien gleichzeitig mit Python
Konvertieren Sie Memos sofort mit Python 2to3
Löschen Sie Bilddateien sofort mit einem Liner
Aktualisieren Sie mehrere Tabellen gleichzeitig mit pandas to_sql
Holen Sie sich sofort die Firmennummer über gbizinfo mit Python
Anfänger versuchen, Word-Dateien sofort in PDF zu konvertieren
Entfernen Sie Überschriften aus CSV-Dateien mit mehreren Formaten mit Python
Sortieren von Bilddateien mit Python (2)
Sortieren Sie große Dateien mit Python
Sortieren von Bilddateien mit Python (3)
Bilddateien mit Python sortieren
Integrieren Sie PDF-Dateien in Python
TXT-Dateien mit Python lesen
[Python] Google Mail mit Python senden: Senden Sie eins nach dem anderen mit mehreren angehängten Bilddateien
Erstellen Sie mit Ansible Playbook mehrere Benutzer mit Seriennummern gleichzeitig
Bearbeiten von EAGLE .brd-Dateien mit Python
Laden Sie mehrere JavaScript-Dateien mit PyWebView
[Python] POST-WAV-Dateien mit Anforderungen [POST]
Mit OpenSSL mit Python 3 verschlüsselte Dateien entschlüsseln
Konvertieren Sie die Liste mit Python in DataFrame
Veröffentlichen Sie mehrere Twitter-Bilder mit Python
Animieren Sie mehrere Standbilder mit Python
Behandeln Sie Excel-CSV-Dateien mit Python
Lesen Sie Dateien parallel zu Python
Ersetzen Sie alles auf einmal durch sed
Mehrfachintegration mit Python und Sympy
[Python] Erstellen mehrerer Fenster mit Tkinter
Konvertieren Sie in Python usw. geschriebene Dateien in PDF mit Syntax-Hervorhebung
Erstellen Sie mehrere Benutzer mit Seriennummern gleichzeitig in Ansible Playbook: Teil 2
Spielen Sie eine Audiodatei von Python mit Interrupt ab
Senden Sie Newsletter auf einmal mit Google Mail
Konvertieren Sie Excel-Daten mit Python in JSON
Konvertiere Hiragana mit Python (Beta) in Romaji
Mit openssl verschlüsselte Dateien werden mit openssl aus Python entschlüsselt
Lesen und Schreiben von JSON-Dateien mit Python
Laden Sie mit Python Dateien im Web herunter
Verarbeiten Sie mehrere Listen mit for in Python
Verlassen Sie mehrere Schleifen gleichzeitig
Frage: Die Mehrfachintegration mit Python funktioniert nicht
Konvertieren Sie chinesische Zahlen mit Python in arabische Zahlen
[Easy Python] Lesen von Excel-Dateien mit Pandas
Kombinieren Sie mehrere Python-Dateien zu einer Python-Datei
Verwalten Sie mehrere Python-Versionen mit Update-Alternativen (Ubuntu)
Beispiel für die Wavelet-Konvertierung von Bildern in Python
[Python] So speichern Sie Bilder mit Beautiful Soup sofort im Web
Drehen Sie in Python mehrere Listen mit for-Anweisung gleichzeitig
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Konvertieren Sie die FBX-Datei in Python in ASCII <-> BINARY
Konvertieren Sie PDF in Bilder (JPEG / PNG) mit Python
Konvertieren Sie PDFs mit Python in Massenbilder
[Python & Unix] Kombinieren Sie mehrere PDF-Dateien zu einer.
[Python] Zeichnen mehrerer Diagramme mit Matplotlib
Konvertieren Sie die SVG-Datei mit Python in png / ico
Verwalten Sie die Python-Umgebung mit mehreren Versionen mit Pythonz, virtualenv
Durchsuchen Sie rekursiv alle Dateien mit mehreren angegebenen Erweiterungen
Konvertieren Sie Windows-Epochenwerte mit Python in das Datum