Mam skrypt w języku Python, który uruchamia dwa pod-komendy, które akceptują tę samą opcję, --config
. Chciałbym stworzyć trzecie pod-polecenie, które kolejno może uruchamiać dwie pierwsze podkomendy.Funkcja rozwiązywania konfliktów argparse dla opcji w podkomendach przekształca argumenty ze słów kluczowych w argumenty pozycyjne
Używając argparse, utworzyłem cewkę dla każdego pod-polecenia, a także trzeci poziomy, którego rodzicami są dwa pod-polecenia. Aby wyjaśnić:
subcommand1 = subparsers.add_parser('subcommand1')
subcommand1.add_argument('--config', help="The config")
subcommand2 = subparsers.add_parser('subcommand2')
subcommand2.add_argument('--config', help="The config")
wrappercommand = subparsers.add_parser('wrappercommand',
parents=[subcommand1, subcommand2],
conflict_handler='resolve')
Wszystko działa, gdy uruchamiam wrappercommand lub podkomendę2. Jednak subcommand1 przerw, z tym jako wyjście:
$ run_command.py subcommand1 --config path_to_config.ini
usage: run_command.py subcommand1 config
optional arguments:
help show this help message and exit
config The config
Wygląda argparse okazało się argumentu słowa kluczowego („--config”) do położenia jednego („config”). Czy jest to oczekiwane zachowanie, gdy sprzeczne opcje są rozwiązywane przez argparse?
Czy możesz opublikować pełny kod parsowania? Czy argument ma być "pomocnikiem"? – Forge
To literówka - powinna to być "help =" Konfiguracja "". – hpaulj