2016-05-02 1 views
0

permettez-moi d'expliquer ce que je pense à faire afin de vous donner un peu de contexte. J'ai un tas de scripts python (qui utilisent argpars ou optpars) et leurs sorties peuvent être généralement sur la consolle JSON, texte ou lamentation format csv. Je voudrais construire une webapp (angulaire + nœud par exemple) qui génère automatiquement une page web pour chacun de mes scripts, y compris une zone de saisie pour tout argument nécessaire au script Python afin de les exécuter à partir du UI. Je ne veux pas écrire, pour chaque script Python, la liste et le type d'arguments dont ils ont besoin, mais je cherche un moyen automatique d'extraire une telle liste de chaque script Python lui-même.arguments Extrait de script python

Je peux essayer d'analyser la sortie -h pour chacun des script ou analyser le script lui-même (add_option) mais peut-être sujette aux erreurs.

Connaissez-vous tous les outils/script/module qui me permet de faire automatiquement?

Merci beaucoup.

+0

En supposant que chaque script prend en charge '-h', peut-être [' docopt'] (http://docopt.org/) pourrait analyser le résultat. –

+0

@ Robᵩ Merci, mais il semble plus une alternative à argparse ect .. – Vincenzo

+0

Vous comprenez mal. Je veux dire que vous devriez lancer 'somescript -h', capturer la sortie, passer cette sortie à l'analyseur' docopt' et utiliser la structure de données résultante pour générer votre code HTML. Vous n'utiliserez pas 'doctopt' comme prévu. –

Répondre

1

Le module inspect vous aidera ici:

>>> import inspect 
>>> def example_function(a, b, c=1234): 
     pass 
>>> inspect.getargspec(example_function) 
ArgSpec(args=['a', 'b', 'c'], varargs=None, keywords=None, defaults=(1234,)) 
+0

Le paquet 'plac' (https://pypi.python.org/pypi/plac) utilise' inspect' comme ceci pour créer un analyseur capable d'exécuter une telle fonction. crée des arguments qui correspondent aux arguments des fonctions. Mais je ne pense pas que cela aide à inspecter un script qui utilise déjà 'argparse'. – hpaulj

0

Vous pourriez avoir à élaborer sur ce que vous avez accès aux scripts et leurs parseurs. Sont-ils des boîtes noires que vous ne pouvez invoquer qu'avec -h et recevoir un message d'aide ou d'utilisation, ou pouvez-vous inspecter le parser?

Par exemple lorsque vous utilisez argparse, vous créez un parser, lui assignez des attributs et créez l'argument Actions. Ces objets d'action sont collectés dans une liste, parser._actions.

Examinez les méthodes parser.format_help et parser.format_usage pour voir quelles valeurs sont transmises au formateur d'aide pour créer les affichages de chaîne. En dehors de l'examen du fichier argparse.py, je suggère de créer un analyseur dans une session interactive, et examiner les objets qui sont créés.