반응형
회사 업무 효율을 위해서 이런저런 스크립트를 짜곤합니다. 그중 파이썬을 애용하는데요.
작성하기 편하고, 모듈도 잘 만들어 져있어서 잘만 쓰면 너무 좋은 언어인듯합니다.
파이썬으로 스크립트 작성 시 argument에 대한 처리 할 때 아래와 같이 하곤 합니다.
# Python 3.7
# file : script.py
# author : blabla
import sys
if __name__ == '__main__':
argument = sys.argv
del argument[0] # 첫번째 인자는 script.py 즉 실행시킨 파일명이 되기 때문에 지운다
print('Argument : {}'.format(argument))
위 스크립트를 실행 해보면 아래와 같은 실행결과를 얻을 수 있습니다.
PS C:\mynode\auto-script> python script.py index.txt index.html
Argument : ['index.txt', 'index.html']
간단한 스크립트 짜기에는 문제 없지만...
스크립트에 옵션 같은 걸 줄 땐(ex. --optional 등등) sys.argv로 인자를 얻어오기에는 까다로울 수 있습니다.
파이썬에는 인자값. 즉, argument에 대한 처리를 도와주는 모듈이 있습니다.(내장모듈)
바로 argparse 라는 놈입니다.
argparse를 이용해서
- 여러개의 argument를 처리
- 옵션 추가하여 처리
기능을 하는 파이선 스크립트를 작성 해보도록 하겠습니다.
# Python 3.7
# file : script.py
# author : blabla
import argpars # 내장모듈
def main(filename_list, option_list):
"""
메인 함수
"""
print('Target File : {}'.format(filename_list))
print('Optional : {}'.format(option_list))
def get_arguments():
"""
argument를 파싱해서 가져옴
"""
parser = argparse.ArgumentParser()
parser.add_argument(nargs='+' ,help='Example) index.html', dest='filename')
parser.add_argument('--optional', '-o', nargs='*', help='Example) save', default=[], dest='option')
filename_list = parser.parse_args().filename
option_list = parser.parse_args().option
return filename_list, option_list
if __name__ == '__main__':
filename_list, option_list = get_arguments()
main(filename_list, option_list)
상단의 sys.argv를 이용한 코드와 차별되게 main함수와 argument를 얻어오는 함수로 나누어 작성해봤습니다.
주요 코드를 보면...
- parser.add_argument(nargs='+' ,help='Example) index.html', default=['index.html'], dest='filename')
- parser.add_argument('--optional', '-o', nargs='*', help='Example) save', default=[], dest='option')
nargs : 인자를 여러개 받음(+는 1~n개, *는 0~n개를 뜻합니다)
help : ArgumentParser()로 파서를 만들면 기본적으로 --help(또는 -h)를 사용할 수 있습니다.(ex. python script.py --help) 도움말을 설정해줍니다.
dest : 인자의 이름을 설정합니다.
default : 디뽈뜨
그리고 실행 시켜보면 아래와 같은 실행화면을 확인 할 수 있습니다.
PS C:\mynode\auto-script> python script.py index.txt index.html --optional "this is string" "this is also number"
Target File : ['index.txt', 'index.html']
Optional : ['this is string', 'this is also number']
optional 부분에 굳이 따옴표를 사용하지 않아도 됩니다.(위의 경우는 띄어씌기 때문에...)
PS C:\mynode\auto-script> python script.py index.txt index.html --optional save
Target File : ['index.txt', 'index.html']
Optional : ['save']
--help 를 해보면 아래와 같이 도움말이 출력됩니다.
PS C:\mynode\auto-script> python script.py --help
usage: script.py [-h] [--optional [OPTION [OPTION ...]]]
filename [filename ...]
positional arguments:
filename Example) index.html
optional arguments:
-h, --help show this help message and exit
--optional [OPTION [OPTION ...]], -o [OPTION [OPTION ...]]
Example) save
반응형
'개발 이야기 > Python' 카테고리의 다른 글
Selenium 네이버 로그인 + Beautifulsoup 나의 메일 리스트 (1) | 2019.08.04 |
---|---|
Python으로 웹 크롤링(Crawling ) (0) | 2019.07.19 |
Selenium으로 웹브라우저 테스트 자동화 (1) | 2019.03.16 |
Python_bson을 json으로 바꾸는 방법 (0) | 2019.02.14 |
Python_pymongo 간단 사용법 (0) | 2019.02.12 |