모든 능력과 옵션에 argparse
대해 당신이 원하는 것처럼 보이는 "미리 준비된"사용 문자열을 얻을 수 없을 것이라고 생각합니다.
즉, 원래 게시물 이후 하위 파서를 살펴 보셨습니까?
다음은 베어 본 구현입니다.
import argparse
parser = argparse.ArgumentParser(prog='mydaemon')
sp = parser.add_subparsers()
sp_start = sp.add_parser('start', help='Starts %(prog)s daemon')
sp_stop = sp.add_parser('stop', help='Stops %(prog)s daemon')
sp_restart = sp.add_parser('restart', help='Restarts %(prog)s daemon')
parser.parse_args()
-h
옵션을 사용하여 실행하면 다음이 생성됩니다.
usage: mydaemon [-h] {start,stop,restart} ...
positional arguments:
{start,stop,restart}
start Starts mydaemon daemon
stop Stops mydaemon daemon
restart Restarts mydaemon daemon
이 접근 방식의 이점 중 하나는 set_defaults
각 하위 구문 분석기를 사용 하여 함수를 인수에 직접 연결할 수 있다는 것입니다. stop
및에 대한 "우아한"옵션도 추가했습니다 restart
.
import argparse
def my_stop(args):
if args.gracefully:
print "Let's try to stop..."
else:
print 'Stop, now!'
parser = argparse.ArgumentParser(prog='mydaemon')
graceful = argparse.ArgumentParser(add_help=False)
graceful.add_argument('-g', '--gracefully', action='store_true', help='tries to terminate the process gracefully')
sp = parser.add_subparsers()
sp_start = sp.add_parser('start', help='Starts %(prog)s daemon')
sp_stop = sp.add_parser('stop', parents=[graceful],
description='Stops the daemon if it is currently running.',
help='Stops %(prog)s daemon')
sp_restart = sp.add_parser('restart', parents=[graceful], help='Restarts %(prog)s daemon')
sp_stop.set_defaults(func=my_stop)
args = parser.parse_args()
args.func(args)
에 대한 "도움말"메시지 표시 stop
:
$ python mydaemon.py stop -h
usage: mydaemon stop [-h] [-g]
Stops the daemon if it is currently running.
optional arguments:
-h, --help show this help message and exit
-g, --gracefully tries to terminate the process gracefully
"정상적으로"중지 :
$ python mydaemon.py stop -g
Let's try to stop...