Voici le code actuel.Comment utiliser python argparse avec des arguments conditionnellement optionnels?
import time
import collections
from modules import outputs
from modules import scrub
from modules import lookups
parser = argparse.ArgumentParser(description='AppMap Converter to Generate Asset Files from AppMapp Data')
parser.add_argument("operation", nargs='?', default="empty", help='The operation to perform')
parser.add_argument("input", nargs='?', default="empty", help='The input AppMapp File Path')
parser.add_argument("output", nargs='?', default="empty", help='The output Asset File Path')
args = parser.parse_args()
start = time.time()
if(args.operation == "Convert"):
input_file_path = args.input
output_file_path = args.output
#DO LOTS OF STUFF
else:
exit()
Le script est appelé sacsproc, donc je l'exécuter à partir de la ligne de commande comme suit:
./sacsproc Convert input.csv output.csv
Tout cela fonctionne bien, le problème est que j'ai besoin d'autres commandes de sacsproc qui peuvent avoir un tout ensemble différent de paramètres secondaires. à savoir une commande peut être:
./sacsproc Clean -rts input.csv output.csv err.csv
Ainsi, je suis en train de déterminer comment on définit des arguments qui sont subordonnées au premier argument? Dans mon esprit, je pense aux utilitaires de ligne de commande zfs qui font ce que j'essaie de faire (par exemple, zpool crée miroir sdb sdc vs zpool remove sda).
Merci, me points dans la bonne direction. Après le test, je pense que cela fonctionne, mais les fichiers d'aide semblent un peu bancal: $ ./sacsproc CombineAppMapp --help utilisation: sacsproc ConvertAppMapp [-h] [entrée] [sortie] – gunslingor
Déplacer les choses autour je reçois (pas ce que j'attends): $ ./sacsproc CombineAppMapp --help utilisation: sacsproc [opération] ConvertAppMapp [-h] [entrée] [sortie] – gunslingor
J'espérais que vous pouviez connecter les points vous-même, mais il y a maintenant un exemple plus complet qui est exactement ce que tu veux je pense ... –