일단해봐

[Python] argparse 사용법, 예제 본문

Python

[Python] argparse 사용법, 예제

GoEz 2021. 4. 16. 23:56

Argument 란?

argparse는 Python Script 실행 시 하나의 Script의 동작을 여러가지 상황에 따라 다르게 동작하도록 할 때 쓰인다.

 

다른 동작을 만들어 내기 위해 Script 실행 시 Argument를 붙여서 원하는 옵션을 정할 수 있다.

 

그럼 Argument가 뭘까? 아마 Code에 익숙하지 않고 Window 환경에서만 PC를 쓰면 전혀 쓸일이 없을 꺼다. 혹시 MS-DOS를 사용해 본 사람들은 Argument를 많이 사용해 봤을 꺼다.







친구한테 3.5인치 디스크 3~4 장에 삼국지를 복사해서 깔아본 세대라면 알고든 모르고던 위의 명령어는 분명히 쳐봤을꺼다. ㅎㅎㅎ

 

위 명령어에 서 arj 는 프로그램 명이고 a , -r 이런 것 들은 Argument라고 한다. 즉, 단순히 정해진 프로그램을 실행시키는 것이 아닌 상황에 따라 옵션을 변경하여 원하는 동작을 수행하도록 하는것이다.

arj 명령을 사용해서 압축을 하기도 풀기도 하기도 해야 하니 옵션(argument)가 반드시 필요하다.

사용자의 입력에 따라 자동차 사양 출력 (예제)

상황을 가정하여 프로그램을 한나 짜보자.

 

경비원 A씨는 고민이 있다. 주민들 주차 문제로 A씨 한테 차량 번호로 연락을 해달라 혹은 몇 호 차냐 자꾸 질문을 한다. 그럴 때 마다 수첩을 뒤져야 하는 것이 힘들었다.

 

요즘 Python 코딩에 빠져 있는 A씨는 차량 번호를 알면 차량 정보를 출력해주는 프로그램을 짜기로 한다. 파일 이름은 PyArg.py 로 정했다.

argparse 패키지 Import


python에서 Arugment를 사용하기 위해서 `argparse` Package를 사용한다.

import argparse

 

입력 Agugment 정의 및 값 저장

# ArgumentParser 객체 
parser = argparse.ArgumentParser(description='Argument 설명 입니다')

# Argument 추가
parser.add_argument('-VehNum', type=int,
                    help='-VehNum 1234: 1st Car, 4567: 2nd Car')

args = parser.parse_args() #입력 Argument들을 args에 할당

 

Arugment를 받기위해서는 우선ArgumentParser 를 이용해 Instance를 만든다. ( 아래에서는 parser가 객체 )

 

Instance 생서 시 Option으로 description = '내용'을 이용해 Argument의 설명을 적을 수 있다. (Help Mode 시 표시됨)

 

Instance를 생성 후 add_argument Method를 이용해 Argument를 정의 할 수 있다.

 

아래 코드를 보면 -VehNum을 Attribute(차량번호)로 Attribute의 Type은 type=int로 Help Mode 시 보여줄 설명은 help='설명' 으로 정의 하였다.

 

마지막으로 args = parser.parse_args() 구문을 이용해 Argument Value를 args에 저장 하였다.


여기까지 작성하면 입력 Argumet 값을 전부 받아오게 된다. 

 

cmd 창을 통해 아래와 같이 명령 할 경우 args에 Argument 값이 저장 된다.

 

PyArg -VehNum=1234 # 차량번호 1234 인 차 정보 알려줘!

 

 

위와 같이 명령을 할 경우 args에 있는 Argument 값 = 1234는 args.VehNum에 저장되어 있어 쉽게 사용 가능 하다.

 

이제 Argument에 따라 차량 정보를 표시해 주기만 하면 된다. 차량 정보를 표시하는 code는 showVehSped() 이라는 함수에 정의 하였다.

def showVehSpec(vehNum):
    # 사용자가 선택한 차종에 따라서 차량 스펙을 보여줘!
    if (vehNum == 1234):
        Address = '1호'
        CellPhone = '010-1234-5678'
        HostName  = 'Jhone'

    elif vehNum == 4567:
        Address = '2호'
        CellPhone = '010-5678-1234'
        HostName  = 'Smith'
    print('Vehicle Address: ', Address)
    print('Vehicle CellPhone: ', CellPhone)
    print('Vehicle HostName ', HostName)

 

이제 아래 Main에서 showVehSpec() 함수를 호출 하면 Code가 완성된다. 함수 내부에 대한 설명은 생략한다.

 

전체 Code의 내용을 보면 아래와 같다.

import argparse

def showVehSpec(vehNum):
    # 사용자가 선택한 차종에 따라서 차량 스펙을 보여줘!
    if (vehNum == 1234):
        Address = '1호'
        CellPhone = '010-1234-5678'
        HostName  = 'Jhone'

    elif vehNum == 4567:
        Address = '2호'
        CellPhone = '010-5678-1234'
        HostName  = 'Smith'
    print('Vehicle Address: ', Address)
    print('Vehicle CellPhone: ', CellPhone)
    print('Vehicle HostName ', HostName)


parser = argparse.ArgumentParser(description='Argument 설명 입니다')

parser.add_argument('-VehNum', type=int,
                    help='-VehNum 1234: 1st Car, 4567: 2nd Car')
args = parser.parse_args()


showVehSpec(args.VehNum)

 

결과를 확인해 보자

 

 

잘된다.

Comments