Convertissez plusieurs fichiers proto à la fois avec python

J'en suis un peu accro, alors je vais l'écrire sous forme de mémorandum.

Chose que tu veux faire

Ce que j'ai fait

Rétrospective du contenu des travaux pratiques

Les deux méthodes suivantes sont prises en charge pour convertir proto en python.

Frappé directement depuis la coque

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

Appel depuis Python

from grpc.tools import protoc

protoc.main((
    '',
    '-I.',
    '--python_out=.',
    '--grpc_python_out=.',
    'helloworld.proto',
))

De la conclusion, il n'y a pas de fonction comme "spécifier un répertoire et lire proto récursivement", et il est nécessaire de spécifier proto un par un comme argument. Par conséquent, il n'est pas réaliste de le faire dans le shell, et on peut supposer que l'utilisation de `glob.glob () 'de python est un raccourci.

Vérifiez les arguments de protoc.main ()

from grpc.tools import protoc

protoc.main((
    '',                       #la magie
    '-I.',                    #Spécification du répertoire à analyser proto--proto_path=***Peut être
    '--python_out=.',         # ***_pb2.Emplacement de stockage de py
    '--grpc_python_out=.',    # ***_pb2_grpc.Il semble qu'il n'y ait presque aucun avantage à le séparer de l'emplacement de stockage de py ↑
    'helloworld.proto',       #Spécification du fichier proto à convertir
))

Autrement dit, passez le taple à protoc.main ().

Lors de l'écriture solide

Tout ce que vous avez à faire est d'en ajouter de plus en plus à vos fesses.

from grpc.tools import protoc

protoc.main((
    '',
    '-I.',
    '--python_out=.',
    '--grpc_python_out=.',
    'helloworld.proto',
    'hoge.proto',
    'fuga.proto',
    'poyo.proto',
    'piyo.proto'
))

Lors de l'utilisation d'une liste

Comme mentionné ci-dessus, l'utilisation de glob.glob () est fluide.

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

Qu'est-ce que «*»! ?? Si vous pensez, vous pouvez google avec "argument de longueur variable python". Pour le dire clairement, c'est une méthode pratique qui s'étend à plusieurs variables en ajoutant un astérisque au début de la liste.

Recommended Posts

Convertissez plusieurs fichiers proto à la fois avec python
Convertir un mémo à la fois avec Python 2to3
Effacez les fichiers image à la fois avec un seul support
Mettre à jour plusieurs tables à la fois avec pandas to_sql
Obtenez le numéro d'entreprise à la fois via gbizinfo avec python
Les débutants essaient de convertir des fichiers Word en PDF à la fois
Supprimer les en-têtes de fichiers CSV à plusieurs formats avec python
Tri des fichiers image avec Python (2)
Trier de gros fichiers avec python
Tri des fichiers image avec Python (3)
Tri des fichiers image avec Python
Intégrez des fichiers PDF avec Python
Lire des fichiers .txt avec Python
[Python] Envoyer gmail avec python: envoyez un par un avec plusieurs fichiers image en pièce jointe
Créez plusieurs utilisateurs avec des numéros de série à la fois avec Ansible Playbook
Manipulation des fichiers EAGLE .brd avec Python
Charger plusieurs fichiers JavaScript avec PyWebView
[Python] Fichiers wav POST avec requêtes [POST]
Décrypter les fichiers cryptés avec OpenSSL avec Python 3
Convertir la liste en DataFrame avec python
Publiez plusieurs images Twitter avec python
Animez plusieurs images fixes avec Python
Gérer les fichiers Excel CSV avec Python
Lire des fichiers en parallèle avec Python
Remplacez tout d'un coup par sed
Intégration multiple avec Python et Sympy
[Python] Création de plusieurs fenêtres avec Tkinter
Convertir des fichiers écrits en python, etc. en pdf avec la coloration syntaxique
Créez plusieurs utilisateurs avec des numéros de série à la fois dans Ansible Playbook: Partie 2
Lire un fichier audio à partir de Python avec interruption
Envoyez des newsletters en une seule fois avec Gmail
Convertir des données Excel en JSON avec python
Convertir Hiragana en Romaji avec Python (bêta)
Décrypter les fichiers cryptés avec openssl depuis python avec openssl
Lire et écrire des fichiers JSON avec Python
Télécharger des fichiers sur le Web avec Python
Traiter plusieurs listes avec for en Python
Sortez de plusieurs boucles à la fois
Question: l'intégration multiple par python ne fonctionne pas
Convertir des nombres chinois en nombres arabes avec Python
[Easy Python] Lecture de fichiers Excel avec des pandas
Combinez plusieurs fichiers python en un seul fichier python
Gérez plusieurs versions de Python avec des alternatives de mise à jour (Ubuntu)
Exemple de conversion en ondelettes d'images en Python
[Python] Comment enregistrer des images sur le Web à la fois avec Beautiful Soup
Transformez plusieurs listes avec l'instruction for en même temps en Python
[Python] Récupérez les fichiers dans le dossier avec Python
Convertir le fichier FBX en ASCII <-> BINARY en Python
Convertir un PDF en image (JPEG / PNG) avec Python
Convertissez des PDF en images en masse avec Python
[Python & Unix] Combinez plusieurs fichiers PDF en un seul.
[Python] Comment dessiner plusieurs graphiques avec Matplotlib
Convertir un fichier svg en png / ico avec Python
Gérez l'environnement de plusieurs versions de Python avec Pythonz, virtualenv
Rechercher récursivement tous les fichiers avec plusieurs extensions spécifiées
Convertir les valeurs d'époque Windows à ce jour avec python