Ich suche ein Argument Parser mit folgenden Struktur zu erzeugen:argparse - Verschiedene obligatorische/verfügbare Parameter pro Aktion
options [ 'backup', 'consistency_check', 'backup_and_consistency_check']
--database [ required ]
--action [ required choice from list options ]
--where_to_backup_to [ only required if --action is 'backup' ]
--what_file_to_consistency_check [ only required if --action is 'consistency_check']
--clean [ optional ]
--force [ optional if --clean is also in arguments ]
Wie ich optionale Argumente mit dem ArgumentParser Modul implementieren kann, je nach Wahl, die war als ein anderes Kommandozeilenargument gemacht.
Ich suche die argparse machen scheitern, wenn zum Beispiel der Befehlszeilenargumente sind
--d database_name --a backup --what_file_to_consistency_check /var/tmp/file.bak
Dies ist, was ich bisher bekommen (ich weiß, dass es sehr wenig, aber ich will nicht gehen in die falsche Richtung vollständig mit subparsers wenn ich es nicht von Anfang an bekommen haben)
actions = ['backup', 'consistency_check', 'backup_and_consistency_check']
def create_parser():
parser = ArgumentParser(description='Parser for Backup/Consistency Check')
parser.add_argument('--database', '-d', dest='db', help='Database name', choices=get_active_database_list())
parser.add_argument('--action', '-a', dest='action', help='Action option', choices=actions)
# --where_to_backup_to [ only if action = backup ]
# --what_file_to_consistency_check [ only if action = cc ]
parser.add_argument('--clean', '-c', dest='clean', help='Clean')
# --force [ only available if --clean is also in arguments ]
return parser
Geben Sie jeder Aktion einen eigenen Subparser. Übrigens würden Sie herkömmlicherweise ein Positionsargument machen. –
Können Sie ein Beispiel geben? Es muss nicht wirklich Code sein - nur eine Beschreibung? Kann ich dem bestimmten Argument einen Subparser und nicht den ganzen Parser hinzufügen? – AK47
Da Subparser * für * bedingt von Aktionen sind, gelten die Beispiele in den Docs alle. –