argparse [duplicate]를 사용하여 양의 정수만 허용하는 방법
Nov 24 2020
사용자가 num2를 입력하지 않으면 1을 기본 숫자로 사용합니다. 그러나 사용자가 숫자를 입력하면 0보다 커야하는 위치도 구현하려고합니다.
import argparse
group = parser.add_mutually_exclusive_group()
group.add_argument('-n2', '--num2', action='store_true', default=1, choices=range(0))
주위를 둘러 본 결과 choices = ranges를 사용하면 숫자 범위를 설정할 수 있지만 오류가 발생합니다.
TypeError: __init__() got an unexpected keyword argument 'choices'
답변
3 MinhNguyen Nov 24 2020 at 11:42
type
다음과 같이 양의 정수 입력을 확인 하는 데 사용할 수 있습니다 .
import argparse
def check_positive(value):
try:
value = int(value)
if value <= 0:
raise argparse.ArgumentTypeError("{} is not a positive integer".format(value))
except ValueError:
raise Exception("{} is not an integer".format(value))
return value
parser = argparse.ArgumentParser(...)
parser.add_argument('--foo', type=check_positive)
args = parser.parse_args()
print('args: {}'.format(args.foo))
1 SachinRajput Nov 24 2020 at 11:45
매개 변수를 약간 변경 한 후 문제를 해결할 수있었습니다. 이게 네가 원하는 것과 같은지 모르겠어
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-n2', '--num2', default=1, type=int,choices=range(0))
방금 작업을 제거했는데 제대로 작동합니다. 나는 또한 파이썬을 처음 사용하므로 필요한 것이 아닌지 알려주십시오.