본문 바로가기

IT/파이썬 Python

파이썬 스크립트에서 실행옵션 (매개변수) 처리하기

반응형

 

프로그램이던 혹은 간단한 스크립트던, 대부분 실행시킬 때 특정한 옵션을 주게 됩니다.

물론 ls 처럼 아무 옵션 없이 실행할 수 있는 명령어도 있지만, 심지어 ls 조차도 보통 ls -al 같이 옵션을 주고 실행하는 경우가 더 많죠.

파이썬에서 옵션을 처리하는 방법은 아래 두 가지가 있습니다.



 

    • sys 모듈의 메서드인 argv 사용
    • optparse 모듈 사용

 

간단하게 사용할때는 sys.argv 를 사용하는게 간단하고요, 프로그램 내부에서는 인자를 주어진 순서로 구분하게 되는데 사용할 때 실수로 순서를 바꾸어 입력한다던가 하면 생각한 것과 전혀다른 결과가 나올 수 있겠죠?

하지만 인자가 하나인 경우는 굳이 optparse를 쓰지 않고 sys.argv를 사용하는 것이 여러모로 간단할 수 있습니다.

아래 예제에서는 인자로 파일을 받아서, 그 파일의 모든 라인을 lines라는 리스트로 입력하고 있습니다.

 

1
2
= open(sys.argv[1], 'r')    
lines = f.readlines()
cs

 

간단하죠? 보통은 인자의 숫자를 체크해서 인자의 숫자가 다르면 exception이 발생하게 하는 경우도 많습니다.

 

인자가 여러 개인 경우, sys.argv를 쓰면 코드를 쓴 사람이 아닌 다른 사람이 쓸 때 불편함이 많으므로 (본인도, 심지어 주석에 적어 놓아도 잊어버릴 경우가 많죠 사실은) optparse모듈을 쓰는 것이 좋습니다.

아래 코드에서 처럼, 옵션을 미리 정의해 놓고 인자를 간편히 쓸 수 있습니다. sys.argv보다 소스 가독성이나 재활용성 면에서 훨씬 나은 모습을 볼 수 있습니다.

 

1
2
3
4
5
6
7
parser = optparse.OptionParser(prog='Margin_calculator', version="1.0")
  parser.add_option('-p''--prod_file',     action='store', dest='prod_file', help='Product file')
  parser.add_option('-u''--udl_file',    action='store', dest='udl_file', help='Underlying file')
  (options, args) = parser.parse_args(sys.argv)
   ...    
   products_info=product_info(options.prod_file)
   ...
cs
>

 

사용법이 굉장히 직관적이기 때문에, 몇 번 사용해 보면 메모 해 놓고 다음 번에 다시 쓰기가 매우 쉽습니다.

참 쉽죠? ^^;

반응형