내 응용 프로그램은 특수 파일 비교 유틸리티이며 하나의 파일 만 비교하는 것은 이해가되지 않으므로 nargs='+'
은 적합하지 않습니다.파이썬 2.7에서 argparse 할 수 있습니까? 최소한 두 개의 인수가 필요합니다.
nargs=N
은 최대 인수가 N
인 경우를 제외하고는 두 개 이상인 경우 무제한 인수를 허용해야합니다.
내 응용 프로그램은 특수 파일 비교 유틸리티이며 하나의 파일 만 비교하는 것은 이해가되지 않으므로 nargs='+'
은 적합하지 않습니다.파이썬 2.7에서 argparse 할 수 있습니까? 최소한 두 개의 인수가 필요합니다.
nargs=N
은 최대 인수가 N
인 경우를 제외하고는 두 개 이상인 경우 무제한 인수를 허용해야합니다.
당신은 같은 것을 할 수 없습니다 : 나는 -h
이것을 실행하면
import argparse
parser = argparse.ArgumentParser(description = "Compare files")
parser.add_argument('first', help="the first file")
parser.add_argument('other', nargs='+', help="the other files")
args = parser.parse_args()
print args
내가 얻을 :
usage: script.py [-h] first other [other ...]
Compare files
positional arguments:
first the first file
other the other files
optional arguments:
-h, --help show this help message and exit
나는 단지 하나 개의 인수와 함께 실행하면 작동하지 않습니다 :
usage: script.py [-h] first other [other ...]
script.py: error: too few arguments
하지만 두 개 이상의 인수가 좋습니다. 세 가지 인자로 다음을 출력합니다 :
Namespace(first='one', other=['two', 'three'])
nargs가 '2+'와 같은 것을 지원하지 않기 때문에 짧은 대답은 할 수 없습니다.
parser = argparse.ArgumentParser(usage='%(prog)s [-h] file file [file ...]')
parser.add_argument('file1', nargs=1, metavar='file')
parser.add_argument('file2', nargs='+', metavar='file', help=argparse.SUPPRESS)
namespace = parser.parse_args()
namespace.file = namespace.file1 + namespace.file2
당신이 필요로하는 트릭은 다음과 같습니다 :
긴 대답은이 같은 사용 무언가가 있음을 해결할 수있다
usage
당신이 파서 사용 문자열을 소유하고 제공하기 위해metavar
을 사용하여 도움말 문자열에 다른 이름의 인수를 표시하십시오.위의 예제는 다음과 같은 도움말 문자열 생산 반환하는 Namespace
객체에 새로운 속성을 추가
usage: test.py [-h] file file [file ...]
positional arguments:
file
optional arguments:
-h, --help show this help message and exit
을 미만이 개 인수가 전달 될 때 여전히 실패합니다
$ python test.py arg
usage: test.py [-h] file file [file ...]
test.py: error: too few arguments
는 또한 http://stackoverflow.com/quest를 보라 ions/4194948/python-argparse-is-a-way-to-a-range-in-nargs가 있습니다. 따라서 도움말 텍스트를 어지럽히 지 않고 (또는 어지럽 혀지지 않고도) 더 많은 유연성을 누릴 수 있습니다. – Evert