2012-06-20 2 views
3

플래그와 변수의 역할을하는 프로그램에 옵션을 지정하고 싶습니다. 예 : "--logging"이라는 인수가 있습니다. 이 인수를 지정하지 않으면 false로 설정하고 싶습니다 (예 : action = 'store_true'). 그러나 인수가 지정되면 두 가지 작업을 수행하려고합니다. 1) "./log_file.log"의 기본 경로를 설정하고 2) 사용자가 다른 로그 파일 위치를 지정할 수 있도록하고 싶습니다.플래그와 변수를 결합한 Python argparse

답변

-1

예 문제는 없습니다. 이 양식을 테스트하고 출력 값을 나중에 코드에서 (당신을 위해 의미가 무엇으로 대체)하는 logging_on를 사용할 수있는 우수한 PyMOTW about argparse

import argparse  
parser = argparse.ArgumentParser() 


parser.add_argument('--logging', action='store_true', default=False, 
        dest='logging_on', 
        help='Activate the logging') 

results = parser.parse_args() 

설명 할 수 있습니다. 또한 구성 파일 또는/및 파일 로그 경로에 대한 인수를 사용할 수 있습니다.

+0

이것은 내 문제를 해결하지 못합니다. True/False 플래그를 만들뿐만 아니라 기본값이나 사용자 지정 값을 유지할 수도 있습니다. 나는 내 자신의 문제를 해결했습니다! – Calcipher

+0

@Calcipher 아 멋지다. 자신의 것을 해결 된 것으로 표시하십시오. – karlcow

6

맞아요. 그래서이 문제에 대한 해결책을 찾았습니다. 그것은 nargs에 의존합니다. 그 예를 감안할 때

#!/usr/bin/python 
# example.py 
import argparse 

parser = argparse.ArgumentParser(description="Example of a single flag acting as a boolean and an option.") 
parser.add_argument('--foo', nargs='?', const="bar", default=False) 
args = parser.parse_args() 

if args.foo: 
    print args.foo 
else: 
    print "Using the default, boolean False." 

여기, 우리는 세 가지 상황에서 사용할 때 발생하는 것입니다 : 여기에 첫 번째 코드는

> ./example.py 
    Using the default, boolean False. 
> ./example.py --foo 
    bar 
> ./example.py --foo baz 
    baz 

을 희망 위의 꽤 자기 설명이다. 만약 그렇지 않다면, nargs = '?' 플래그가 지정되지 않은 경우 (우리의 경우 부울 False), 인수없이 플래그가 지정되면 const 값을, 플래그가 인수로 지정되면 인수를 사용합니다. False를 따옴표로 묶지 않도록주의하십시오. 거짓은 내장 유형 (부울)이고 '거짓'또는 '거짓'은 참으로 평가됩니다.