Как обрабатывать аргументы logi c с модулем argparse в Python - PullRequest
0 голосов
/ 14 января 2020

Я пишу скрипт, который хочу запускать в двух режимах:

  1. - testall - дополнительные аргументы не требуются
  2. - test - аргументы: -f, -t, -sm необходимо

, но я не знаю, как закодировать этот лог c с помощью модуля argparse. Идеи? Когда я запускаю

python3 test_argparse.py --testall

выдает:

usage: test_argparse.py [-h] [--testall TESTALL | --test TEST] [-f FROM]
                        [-t TO] [-sm {preserve,noresdir}]
test_argparse.py: error: argument --testall: expected one argument

Пока ...

import argparse

parser = argparse.ArgumentParser(description="Tests fast copy operation. Checks MD5 hashes, file and directory "
                                             "permissions, sync modes (sync, keep, recopy, resync, preserve, resdir, "
                                             "noresdir) and outputs the result to MySQL database on Nemo")
group = parser.add_mutually_exclusive_group()
group.add_argument("--testall", help="tests copy operations between all available zones", type=str)
group.add_argument("--test", help="tests copy operation between specific zones", type=str)

parser.add_argument("-f", "--from", help="name of the zone to copy from")
parser.add_argument("-t", "--to", help="name of the zone to copy to")
parser.add_argument("-sm", "--syncmode", help="mode to use when copying", choices=['preserve', 'noresdir'])
args = parser.parse_args()

if __name__ == "__main__":
    print(vars(args))
    if args.testall:
        print('Testing TESTALL mode')
    elif args.test:
        print('Testing TEST mode')
    else:
        print('Testing everything else')
...