. 방법은 다음과 같습니다.
from argh import *
from show import show # only needed for demonstration purposes
CMD_ALIASES = { 'dpd' : 'download-and-parse-data',
'dp' : 'download-and-parse-data',
'dd' : 'download-data',
'pd' : 'parse-data', }
def choices_for(d):
"""
Return list of unique items (command aliases plus unabridged commands).
Works in Python >= 2.5. NB In the degenerate case when an alias and an
unabridged command are identical, the alias takes priority. (In my best
Terminator voice: Don't do dat.)
"""
return sorted(set(d.keys()) | set(d.values()))
@arg('cmd', choices=choices_for(CMD_ALIASES))
@arg('-r', '--randomize-order', default=False)
@arg('-t', '--training-percent', default=0)
def main(args):
args.command = CMD_ALIASES.get(args.cmd, args.cmd)
show(args, props=True)
dispatch_command(main)
이렇게하면 다소 일반화 된 앨리어싱 메커니즘 (주어진 명령에 대해 여러 별칭을 허용하는 메커니즘)이 설정됩니다. 결과로 얻는 args
개체는 실제로 주어진 명령에 대한 args.cmd
값과 지정된 별칭이있는 경우이를 확인하는 표준 args.command
값을 모두가집니다. 개별 기능에 명령을 파견하는 경우 명령 별칭을 할 argh
에 내장 된 또 다른 메커니즘도있다
$ ./my_program.py dpd -r -t 80
args:
cmd='dpd'
command='download-and-parse-data'
randomize_order=True
training_percent=80
: 예를 들어
는 @aliases
장식이 here을 설명했다. 주의 :이 접근법은 최신 버전 argparse
에 의존하므로 이전 Python 배포판/환경에서는 작동하지 않을 수 있습니다.