[파이썬] argparse의 템플릿 및 스키마 사용

argparse는 Python에서 명령행 인터페이스를 작성하는 데 사용되는 강력한 모듈입니다. 이 모듈은 명령행에서 인수를 입력받을 수 있게 해주고, 인수를 구문 분석하여 처리할 수 있게 도와줍니다. argparse를 사용하면 사용자가 원하는 인수를 지정하고 처리할 수 있는 대화형 명령행 인터페이스를 만들 수 있습니다.

argparse는 프로그램에 필요한 인수의 유효성을 검사하고, 도움말 메시지를 자동으로 생성하며, 사용자가 잘못된 인수를 입력하는 경우 적절한 오류 메시지를 표시하는 등 다양한 기능을 제공합니다. 이를 통해 사용자가 정확하고 효율적으로 프로그램을 사용할 수 있습니다.

기본 사용법

argparse를 사용하려면 먼저 모듈을 import해야 합니다. 다음은 argparse를 사용하여 인수를 처리하는 간단한 예제 코드입니다.

import argparse

# ArgumentParser 객체 생성
parser = argparse.ArgumentParser(description='이 프로그램은 입력된 인수를 처리합니다.')

# 인수 추가
parser.add_argument('input', help='입력 파일의 경로')
parser.add_argument('--output', help='출력 파일의 경로')

# 인수 구문 분석
args = parser.parse_args()

# 인수 사용
print(f'입력 파일: {args.input}')
if args.output:
    print(f'출력 파일: {args.output}')

위의 코드에서는 ArgumentParser 객체를 생성하고, add_argument() 메서드를 사용하여 인수를 추가합니다. 인수에 대한 설명을 추가하는 것도 가능합니다. 그런 다음 parse_args() 메서드를 호출하여 입력된 인수를 구문 분석하여 args 객체를 반환받습니다. args 객체의 속성을 사용하여 인수를 사용할 수 있습니다.

위의 예제에서는 필수 인수로 input을 받고, 옵션 인수로 output을 받습니다. input은 항상 지정되어야 하지만, output은 선택적으로 지정할 수 있습니다.

인수 유효성 검사

argparse를 사용하면 인수의 유효성을 간단하게 검사할 수 있습니다. 다음은 유효성 검사를 수행하는 예제 코드입니다.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('number', type=int, help='정수 입력')
args = parser.parse_args()

if args.number < 0:
    print('입력된 수는 0보다 작을 수 없습니다.')
else:
    print(f'입력된 수: {args.number}')

위의 코드에서는 add_argument() 메서드에 type=int를 추가하여 number 인수의 타입을 정수로 지정합니다. 이렇게 하면 args.number는 항상 정수로 변환됩니다. 그런 다음 유효성을 검사하여 0보다 작은 수가 입력되면 오류 메시지를 출력합니다.

템플릿 및 스키마 사용

argparse를 사용하면 인수를 구문 분석하기 위한 템플릿과 스키마를 정의할 수 있습니다. 템플릿은 일반적으로 입력할 값의 형식을 나타내는 문자열입니다. 예를 들어, <int>는 정수를 입력해야 함을 의미하고, <str>은 문자열을 입력해야 함을 의미합니다.

스키마는 인수에 대한 메타데이터를 정의하는 방법입니다. 이로써 인수의 이름, 인수의 유형, 도움말 메시지 및 기타 버그 수정 및 동작 제어 옵션을 지정할 수 있습니다.

아래는 템플릿과 스키마를 사용하여 인수를 처리하는 예제 코드입니다.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('name', help='이름을 입력하세요. (예: --name John)')
parser.add_argument('age', type=int, help='나이를 입력하세요. (예: --age 30)')

args = parser.parse_args()

print(f'이름: {args.name}')
print(f'나이: {args.age}')

위의 코드에서는 add_argument() 메서드를 사용하여 nameage 인수를 정의합니다. 각 인수에 대해 템플릿 및 도움말 메시지를 제공하고 있습니다.

위의 예제에서는 입력된 값에 대한 유효성을 검사하지는 않았으므로, 사용자가 잘못된 형식으로 입력하면 오류가 발생할 수 있습니다. 따라서 실제 애플리케이션에서는 입력 유효성을 검사하는 추가적인 로직이 필요합니다.

결론

argparse는 명령행 인터페이스를 작성하는 데 유용한 파이썬 모듈입니다. 템플릿과 스키마를 사용하여 사용자가 원하는 인수를 지정하고 처리할 수 있는 대화형 명령행 인터페이스를 만들 수 있습니다. argparse를 사용하여 프로그램을 더 유연하고 사용자 친화적으로 만들어보세요!