나는 현재 다음과 같은 코드가 있습니다 : 파이썬
import argparse
parser = argparse.ArgumentParser(description='Adds a new modem to Iridium account')
parser.add_argument('imei', metavar='I', nargs=1, help='the modems IMEI')
parser.add_argument('-t1', '--type1', metavar='t1', nargs=1, choices=('email', 'directip', 'sbddevice'), default='directip', help='Call type (default: directip)')
parser.add_argument('-a1', '--address1', metavar='a1', nargs=1, default='75.101.138.217:9097', help='Call address (default: 75.101.138.217:9097)')
parser.add_argument('-t2', '--type2', metavar='t2', nargs=1, choices=('email', 'directip', 'sbddevice'), help='Call type')
parser.add_argument('-a2', '--address2', metavar='a2', nargs=1, help='Call address')
parser.add_argument('-t3', '--type3', metavar='t3', nargs=1, choices=('email', 'directip', 'sbddevice'), help='Call type')
parser.add_argument('-a3', '--address3', metavar='a3', nargs=1, help='Call address')
parser.add_argument('-t4', '--type4', metavar='t4', nargs=1, choices=('email', 'directip', 'sbddevice'), help='Call type')
parser.add_argument('-a4', '--address4', metavar='a4', nargs=1, help='Call address')
parser.add_argument('-t5', '--type5', metavar='t5', nargs=1, choices=('email', 'directip', 'sbddevice'), help='Call type')
parser.add_argument('-a5', '--address5', metavar='a5', nargs=1, help='Call address')
args = parser.parse_args()
내가 말에 모든 -t 및 -a를 결합 할 수있는 방법이 있나요 -M1, -M2 , -m3, -m4, -m5 여기서 t는 아래의 동일한 선택 항목과 -a가 두 번째 인수이지만 첫 번째 값과 동일한 선택 항목에 국한되지 않는 인수의 첫 번째 값입니까? 당신이 이것을 할 수 있어야하는 것처럼 보입니다. 그렇지 않으면 나중에 t1과 a1이 있는지 확인하기 위해 나중에 검사해야합니다. 사용자가 하나를 제공하면 다른 하나를 제공해야하기 때문입니다.
그래서 그 대신이 도로 아래로 사람을 도움이 될 것입니다,하지만 난 알렉스가 제안하는 일을 결국 경우에 당신은 -m1 email [email protected]
무엇보다 단순한'-M1 이메일에 대한 : 테스트 @의 gmail.com'을 대신뿐만 아니라 이메일 주소에 적용되는 것 때문에
nargs
매개 변수는choices
함께 사용할 수 없습니다 분명이 알아서 할 수 있지만, ? 나는'argparse'를 쉽게 알지 못한다. (실행 가능하다면) 하나의 옵션에 대해 두 개의 인수를 넣는 것이 쉽지만 사용자로서 나는 이상한 파싱 행동에 놀랐을 것이다.'type : wh @ tever'는 내게 완벽하게 자연 스럽습니다. –정확히 5 개의 주소에 대한 제한은 조금 임의적으로 보입니다. 주소를 위치 인수로 사용하고 IMEI를 옵션으로 사용 하시겠습니까? – Philipp
당신은'nargs = 2'와 함께 두 개의 args를 받아 들일 수 있고 그 다음에 출력을 파싱 할 수 있습니다 (여러분의'choices ='는 그걸로는 작동하지 않을 것입니다). 하지만 당신이'~'메소드를 사용했다고 생각합니다. – avacariu