2014-10-20 6 views
0

이 예제에서 gflags를 잘못 사용하는 방법은 무엇입니까? 명령 줄에서 플래그를 설정해도 기본값이 무시되지는 않지만 필요한 플래그를 설정하고 기본값 (주석 처리 된 코드)을 사용하지 않으면 플래그가 올바르게 설정됩니다 (False).플래그가 python-gflags에 설정되지 않았습니다.

import gflags 
from gflags import FLAGS 

#gflags.DEFINE_bool('use_cache', None, '') 
#gflags.MarkFlagAsRequired('use_cache') 

gflags.DEFINE_bool('use_cache', True, '') 

if __name__ == '__main__': 
    if FLAGS.use_cache == True: 
    print 'use_cache == True' 
    else: 
    print 'use_cache == False' 

.

~ python testflags.py --use_cache=False 
use_cache == True 
~ python testflags.py --help 
use_cache == True 

답변

5

구문 분석을 위해 FLAGS (argv)를 호출하십시오.

사용 예제 :

FLAGS = gflags.FLAGS 

    # Flag names are globally defined! So in general, we need to be 
    # careful to pick names that are unlikely to be used by other libraries. 
    # If there is a conflict, we'll get an error at import time. 
    gflags.DEFINE_string('name', 'Mr. President', 'your name') 
    gflags.DEFINE_integer('age', None, 'your age in years', lower_bound=0) 
    gflags.DEFINE_boolean('debug', False, 'produces debugging output') 
    gflags.DEFINE_enum('gender', 'male', ['male', 'female'], 'your gender') 

    def main(argv): 
    try: 
     argv = FLAGS(argv) # parse flags 
    except gflags.FlagsError, e: 
     print '%s\\nUsage: %s ARGS\\n%s' % (e, sys.argv[0], FLAGS) 
     sys.exit(1) 
    if FLAGS.debug: print 'non-flag arguments:', argv 
    print 'Happy Birthday', FLAGS.name 
    if FLAGS.age is not None: 
     print 'You are a %d year old %s' % (FLAGS.age, FLAGS.gender) 

    if __name__ == '__main__': 
    main(sys.argv)