파이썬을 사용해 보도록 한다... 잘모르므로 다이제스트 형식으로 만들어서 짤라서 쓸수 있도록 하면 좋을 것 같아서 그렇게 해보기로...
파이썬 사용해보기 - 1
파이썬이라는 것에 대해서 잠시 알아본다. 알아보려면 뭐, 간단하게 프로그램을 만들어 보는 것이 제일이라는 생각하는 바 사용자가 정한 옵션에 따라서 다른일을 하게 만드는 콘솔 프로그램을 만들어 보는 것이 어떤 언어를 하든 기본이 된다고....
기본은 원래 hello world 찍는 거, python 명령어 출력 등이 있는 데, 이 부분은 과감히 넘어간다. 하루 이틀 장사하는 거 아니니...
1. 메인 함수 만들기
엔트리 포인트라고도 하는 메인 함수를 만들어 보기로 한다.
파이썬에서는 과감히 중괄호를 생략 하기 때문에 scope 이라고 불리는 함수 범위를 들여쓰기로 구분한다.
#-*- coding: euc-kr -*-
import sys
def main(args):
print "this is a main function"
print "난 메인 함수"
main(sys.argv)
간단하다. 단 내가 이해하기로 두가지 주의 할 부분이 있는 데
1.1. main(sys.argv) 를 생략하면 어케 될까?
물론, 찍히지 않을 것이다. 왜냐 하면 뒤에 얘기 하겠지만, 이 부분을 생략하면 def 로 정의한 함수 부분만 남아 있으니 파이썬 입장에서는 아무것도 할 것이 없으니 당연한 얘기지만...
여하튼 엔트리 포인트 함수가 만들어 졌다.
1.2. #-*- coding: euc-kr -*- 이건 주석인가?
이부분은 주석 부분이 아니라 한글문제 인식 때문에 생긴 구문이다
현재 인코딩을 euc-kr로 지정하겠다는 말인 것...
위에 처럼 직접 쓰는 데는 다른 인코딩도 문제가 없으나 사용자 입력이나 파일에서 받아오려 할 때 문제가 생긴다. 주의하자.
※ 젤 중요한 것이 하나 빠졌는 데 그건 들여쓰기 이다. 내가 알기로는 파이썬은 들여쓰기의 언어이다. 중괄호가 없는 대신이라고 생각 하면 편할 듯.
2. 함수 만들기
함수 만들기는 이미 위에서 정의하고 만들어 보았다라고 말해도 될 듯하다.
지금 내가 만들것은 사용자 입력에 따라서 다른 형태로 반응하는 콘솔 프로그램을 만들어 보기로 했기 때문에, 사용자에게 현재 어떤 옵션이 있는 지 확인 하도록 만들어 주는 함수가 필요 할 것이다.
우선 사용자가 콘솔 명령어가 어떤 것이 있는 지에 대한 사용법을 알려주는 메서드를 하나 만들어 준다. 이름은 아래와 같이...
def usage():
print __name__+".py -c [config file path] -m [mxd file path] [-v|-s]"
print "-c : config file path [full path recommanded]"
print "-m : mxd file path [full path recommanded]"
print "-v : validation check from mxd file"
print "-s : start converting mxd file"
print "--config : alternative option for -c"
print "--mxd : alternative option for -m"
print "--valcheck : alternative option for -v"
print "--start : alternative option for -v"
위의 메서드에서도 주의 해서 볼 것이 __name__이며, 현재 파일 이름을 되돌려 주는 예약어 이다.
3. getopt 함수 사용하기
역시나, 파이썬도 getopt를 지원하고 있다. 주요 부분을 살펴 보면
try:
opts, args = getopt.getopt(sys.argv[1:], "c:m:hvs", ["config", "mxd", "help", "valcheck","start"])
except getopt.GetoptError as err:
# print help information and exit:
print str(err) # will print something like "option -a not recognized"
usage()
sys.exit(2)
중요한 부분을 한번 읽어 보면 -> 오류가 발생하면 사용자에게 현재 사용가능한 옵션들을 보여 주고 빠지는 걸로...
3.1 사용자 옵션 보여주기
getopt 함수에서 받은 내용을 상황에 맞게 분배 하여 보여 줍니다.
사용자 옵션을 보여 주는 것은 다음과 같이 for 문을 순환하면서 보여 준다.
별 할 말은 없고 사용법만 알면 될 듯
for o, a in opts:
if o in ("-c", "--config"):
configpath = a
elif o in ("-m", "--mxd"):
mxdpath = a
elif o in ("-h", "--help"):
usage()
sys.exit()
elif o in ("-v", "--valcheck"):
validationcheck = True
elif o in ("-s", "--start"):
start = True
else:
assert False, "unhandled option"
print "configpath %s, mxdpath %s, validationcheck %s" % (configpath, mxdpath, validationcheck)
파이썬도 없는 게 없는 언어이구나 하는 생각이 든다..
for 문도, if elif 문, assert 문, 불리언(True/False)
쓰임새는 코드만 봐도 알겠지??
3.2 테스트
테스트 명령은 다음과 같이 두가지를 테스트 해 보았다
명령:
python mainfunc.py -c path/path -m mpath/mpath -v
출력: 해보기
명령:
python mainfunc.py -h
출력: 해보기
이상.
'프로그래밍' 카테고리의 다른 글
파이썬 사용해보기-3 (0) | 2023.01.25 |
---|---|
파이썬 사용해보기-2 (0) | 2023.01.24 |
[C] iconv API 사용하기 (0) | 2023.01.20 |
[Java]apache commons 를 이용한 tar압축 풀기 (2) | 2023.01.19 |
[자바] apache-commons-net FtpClient 래퍼 및 파일 다운로드 (0) | 2023.01.18 |