스크립트에 대한 부울 인수


79

Python에서는 int 및 str 인수를 스크립트에 추가하는 방법을 이해합니다.

parser=argparse.ArgumentParser(description="""Mydescription""")
parser.add_argument('-l', type=str, default='info', help='String argument')
parser.add_argument('-dt', type=int, default ='', help='int argument')

부울은 무엇입니까?

기본적으로 스크립트에 특정 작업을 수행할지 여부를 알려주는 플래그를 스크립트에 전달하고 싶습니다.


2
뭐가 잘못 action='store_true'됐나요?
Rik Poggi 2012

부울로 어떤 동작을 원하십니까? (예 : '-v true'및 '-v false'와 함께?)
kennytm

답변:


152

action와 함께 사용할 수 있습니다 store_true| store_false, 또는 int를 사용하고 암시 적 캐스팅이 부울 값을 확인하도록 할 수 있습니다.

를 사용하면 and 인수를 action전달하지 않고 true로 설정하려면 간단히 포함합니다.--foo=true--foo=false

python myProgram.py --foo

사실 나는 당신이 원하는 것은

parser.add_argument('-b', action='store_true', default=False)

8
나는 필요하다고 생각하지 않는다 default=False.
Paul Draper 2014 년

24
@PaulDraper : 명시적인 것이 암시적인 것보다 낫습니다.
sberry

@PaulDraper 필요하지 않은지 확인했지만 명시적인 값으로 넣을 수 있습니다.
Caumons 2014 년

@PaulDraper 부울 True의 기본값이 아닙니까?
Aerin


7
import distutils.util
ARGP.add_argument('--on', '-o', type=distutils.util.strtobool, default='true')

그것을 부르는 예 :

$ ./myscript                # argp.on = 1
$ ./myscript --on=false     # argp.on = 0
$ ./myscript --on=False     # argp.on = 0
$ ./myscript --on=0         # argp.on = 0
$ ./myscript --on=1         # argp.on = 1
$ ./myscript -o0            # argp.on = 0
$ ./myscript -o false       # argp.on == 0

"예"및 "아니오"와 같은 값을 지원하려면 다른 정확한 문자열 일치를 처리하기 위해 인수를 로컬 래퍼 함수에도 바인딩 할 수 있습니다. 또한 입력을 yaml로 해석하여 예 / 아니오도 처리 할 수 ​​있습니다. 그래도 난 한 동안이 일을하지 않은, 그리고 내가 같은과 상호 배타적 인수로 빨아했습니다 최근에 생각하는 dest가치, 하나 --no-optionaction='store_false', 하나 --optionaction='store_true'

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.