콘솔용 프로그램을 작성하다보면 같이 입력되는 명령어 인자(파라미터)들을 다루는데 많은 귀찮은 작업이 필요합니다.
여기서 인자들이란 아래와 같이
#-i : 입력 파일 이름 #-o : 출력 파일 이름 #-c : 특정 조건을 수행하라는 옵션 python example.py -i inputname -o outputname -c |
위와 같은 옵션을 처리해야하는 프로그램이라면 sys.argv[1:]의 인자를 파싱해가며 처리해줘야합니다.
이를 좀더 편하게 하기위한 getopt 함수를 사용해봅시다.
(설명이 귀찮으면 바로 예제코드 복붙해서 테스트해도 좋은방법입니다)
아래는 getopt 함수의 레퍼런스 입니다.
리턴값은 첫번째 옵션, 그리고 옵션 값으로 보면됩니다.
getopt.getopt(args, options[, long_options]) |
args에는 입력받은 파라미터 문자열을 넣고 (일반적으로 sys.argv[1:])
두번째 options는 단일 문자 옵션, 그리고 long options는 긴문열 옵션이 입력됩니다.
아래는 체크 옵션 인자로 a,b,c,h, help
(하나만 입력받는 옵션 인자)
입력 인자로 i, o, input,output 로 받기위한 예제 코드입니다.
(인자에 대한 추가 값을 받는 인자)
여기서 i,o 옵션은 추가 인자를 받기 때문에 ':' 문자를 (-i infile 이런식으로 입력)
input,output 또한 추가 인자를 받기 때문에 "=" 문자를 붙여줍니다. ( --input infile 이런식으로 입력)
- import sys
- import getopt
- def help():
- print "print help usage"
- return
- def main():
- try:
- # 여기서 입력을 인자를 받는 파라미터는 단일문자일 경우 ':' 긴문자일경우 '='을끝에 붙여주면됨
- opts, args = getopt.getopt(sys.argv[1:],"abchi:o:",["input=","output=","help"])
- except getopt.GetoptError as err:
- print str(err)
- help()
- sys.exit(1)
- for opt,arg in opts:
- if (opt == "-a"):
- print "a option enabled"
- elif ( opt == "-b"):
- print "b option enabled"
- elif ( opt == "-c"):
- print "c option enabled"
- elif ( opt == "-i" ) or ( opt == "--input"):
- print "input file = "+arg
- elif ( opt == "-o") or ( opt == "--output"):
- print "ouput file = "+arg
- elif ( opt == "-h") or ( opt == "--help"):
- help()
- return
- if __name__ == '__main__':
- main()
아래는 위의 예제를 실행했을때 테스트한 경우에 따라 출력된 결과입니다.
잘못된 옵션('d')을 넣었을 경우
a,b 체크 옵션을 주고, i와 output 옵션을 주어 추가정보를 주었을 경우
a,b,c 체크옵션을 주고, -i와 --output을 이용해 추가 정보를 주고 h 옵션을 주었을 경우
- 참고 링크
https://docs.python.org/2/library/getopt.html'IT > Python' 카테고리의 다른 글
파이썬 장고(Django)를 사용한 웹서버 구축하기 (0) | 2016.12.17 |
---|---|
파이썬(python)을 사용하여 프로그램에 입력값 넘겨주기 (0) | 2015.12.03 |
파이썬 웹서버 모듈(BaseHTTPServer, SimpleHTTPServer) 사용하기 (0) | 2015.06.11 |
파이썬 웹프로그래밍 - 이미지 다운로드 (urllib2, httplib) 소스 (3) | 2015.05.15 |
파이썬 웹프로그래밍 - 웹 모듈 urlparse 예제 (0) | 2015.05.14 |