2011-07-03 6 views
3

getopt 모듈을 사용하여 명령 행 옵션과 인수를 얻으려면 python으로 코드를 작성하려고합니다.getopt를 사용한 명령 행 옵션과 인수

import getopt 
import sys 

def usage(): 
    print('Usage') 

def main(): 
    try: 
     opts, args = getopt.getopt(sys.argv[1:], 'xy:') 
    except getopt.GetoptError as err: 
     print(err) 
     usage() 
     sys.exit() 

    for o,a in opts: 
     if o in ("-x", "--xxx"): 
      print(a) 
     elif o in ("-y", "--yyy"): 
      print(a) 
     else: 
      usage() 
      sys.exit() 

if __name__ == "__main__": 
    main() 

문제는 내가 옵션 x의 인수를 읽을 수 없습니다,하지만 난 y의 인수를 읽을 수 있습니다 : 다음은 내 코드입니다. 이 문제를 해결하려면 어떻게해야합니까?

+3

구문이 좀 더 친숙하므로 http://docs.python.org/library/argparse.html#module-argparse를 참조하십시오. –

+1

http://docs.python.org/library/argparse.html#module-argparse –

+0

은 일반적인 getopt double colon ::이 '선택적'인수를 허용하는 데 사용된다는 점에 유의해야합니다. '--help'는 허용되지만 '--help'를 찾지 않는 한 결코 처리되지 않을 것입니다. : '. 그들은이 사건에서 펄이 파이썬보다 더 나은 getopt 'stock'모듈을 얻었 기 때문에 저에게 화를 내지 않는 문서에서 지원되지 않는다는 것을 언급하지 않습니다 ... 물론 우리는 optparse와 argparse를 가지고 있습니다 (물론 그 외에는 모두 A를 배웁니다.) COLON/FEATURE BURNS BUTTON!) – osirisgothra

답변

10

getopt.getopt(sys.argv[1:], 'x:y:')

http://docs.python.org/library/getopt.html

명령 행 옵션과 매개 변수 목록을 구문 분석하십시오. args는 실행중인 프로그램에 대한 참조 인 이 없이는 구문 의 목록입니다. 일반적으로 이는 sys.argv [1 :]을 의미합니다. 옵션은 스크립트가 콜론 인수를 요구하는 옵션을 인식 원하는 옵션 문자의 문자열 (':'; 즉, 유닉스 getopt는()를 사용하는 것과 동일한 형식).

+1

감사합니다. 작동합니다. –