2017-05-04 10 views
0

콘솔에서 파이썬으로 작성된 내 프로그램에 이름 목록을 전달하고 싶습니다.Python에서 argparse.ArgumentParser를 사용하여 명령 줄에서 문자열 목록을 전달하고 구문 분석하는 방법은 무엇입니까?

# myprog.py 

from argparse import ArgumentParser 

parser = ArgumentParser() 
parser.add_argument('-n', '--names-list', default=[]) 
args = parser.parse_args() 

print(args.names_list) # I need ['name1', 'name2'] here 

을 주도 : 나는이 코드를 시도

$ python myprog.py -n name1 name2 

를 따라서 : 예를 들어, 나는 (내가 때문에 bash 작동하지해야 알)과 유사한 방법을 사용하고 싶습니다 오류 :

usage: myprog.py [-h] [-n NAMES_LIST] 
myprog.py: error: unrecognized arguments: name2 

은 내가 따옴표 "name1 name2"로 이름을 전달할 수 알고 내 코드 args.names_list.split()에 분할. 그러나 궁금 해서요. argparse 모듈을 통해 문자열 목록을 전달하는 더 좋은 방법이 있습니까?

모든 아이디어를 얻을 수 있습니다.

감사합니다.

답변

2

임의의 수의 인수를 취하려면 --names-list을 정의해야합니다. 하지만 인수의 임의의 숫자와 옵션은 일반적으로 위치 인수와 잘 재생되지 않습니다

parser.add_argument('-n', '--names-list', nargs='+', default=[]) 

참고 :

# Is this 4 arguments to -n, or 
# 3 arguments and a single positional argument, or ... 
myprog.py -n a b c d 
1
parser.add_argument('-n', '--names-list', default=[], nargs='+')