Code example

Case1.py

#!/usr/local/bin/python

import sys
import getopt

try:
      opts, args = getopt.getopt(sys.argv[1:],"i:" ,["inp="])
except getopt.GetoptError as err:
      print str(err)
      sys.exit(1)

for opt,arg in opts:
      if  opt in ("-i", "--inp"):
            f_inputdeck = open(arg, "r")

print "input file = " + f_inputdeck.name
inputdeck_lines = f_inputdeck.readlines()


f_inputdeck.close()

주요 코드 설명

#!/usr/local/bin/python

import sys
import getopt
  • #! 을 통해 이 스크립트를 실행시켜줄 파이썬 프로그램의 경로를 지정 (참고링크)
  • 필요한 모듈을 불러온다
    • sys 모듈은 파이썬 인터프리터와 관련된 정보와 기능을 제공하는 모듈이며, 해당 스크립트로 넘어온 입력인자(argv)를 확인하기 위해 사용
    • getopt 입력인자를 보다 편리하기 처리하게 해주는 모듈
...

try:
      opts, args = getopt.getopt(sys.argv[1:],"i:" ,["inp="])
except getopt.GetoptError as err:
      print str(err)
      sys.exit(1)
...
  • getopt.getopt() 함수를 이용해 입력 인자를 옵션과 옵션에 대한 추가 값으로 분류 해준다. 추가 옵션 값을 가지는 "-i", "--inp" 옵션을 받을 수 있으며, 이때 입력된 옵션 값은 opts에 저장되고, 추가 옵션 값은 args에 저장한다.
    • getopt.getopt(sys.argv[1:],"i:" ,["inp="])에서 getopt.getopt() 함수의 첫 번째 인자는 입력되는 파라미터 문자열 입력 받는다. 기본적으로 실행 파일 이름을 제외한 문자열인 sys.argv[1:] 을 입력 받으며, 두 번째 인자는 입력 받을 단일 문자 옵션, 마지막 인자는 입력 받을 긴 문자 옵션이 입력된다.
    • 옵션 뒤에 추가 옵션 값이 필요한 경우 단일 문자 옵션인 경우 옵션 명 뒤에 :를 긴 문자 옵션인 경우 =를 붙여 준다.
    • ./main.py --inp input.dat 로 실행 시 opts에 옵션 명과 옵션 값이 저장된 튜플 형태의 배열인 [('--inp', 'input.dat')]가 저장된다.
    • 링크 : Python documentaion getopt, 한글자료 getopt 함수 사용하기
  • 입력된 옵션 값 이외에 다른 옵션 값이 입력되는 경우 getopt.GetoptError 에러가 발생하며, 이에 대한 에러 메시지는 err에 저장된다.
    • try ... except 구문을 이용해 잘못된 옵션 값이 입력된 경우 이에 대한 에러 값을 출력하고 프로그램을 종료한다.
...
for opt,arg in opts:
      if  opt in ("-i", "--inp"):
            f_inputdeck = open(arg, "r")
...
  • opts에 저장된 옵션 명을 opt에 옵션 값을 arg에 저장하고 이를 체크하는 부분이다.
  • 입력된 옵션 명이 -i 또는 --inp이면 이때의 옵션 값을 입력 파일의 경로라 판단하여 open()함수를 통해 파일을 열고 이에 대한 정보를 f_inputdeck 이라는 파일 객체에 저장한다.
...
print "input file = " + f_inputdeck.name
inputdeck_lines = f_inputdeck.readlines()


f_inputdeck.close()
  • 정상적으로 입력된 파일 경로를 출력해주고, 입력 받은 파일을 닫고 프로그램을 종료한다.

results matching ""

    No results matching ""