[파이썬] argparse의 사용자 입력 검증

Python의 argparse 모듈은 명령줄 인터페이스를 작성하는 데 도움이되는 강력한 도구입니다. 하지만 사용자가 잘못된 입력을 제공하면 예기치 않은 동작을 일으킬 수 있습니다. 이를 방지하기 위해 argparse는 입력을 유효성 검사하기 위한 다양한 방법을 제공합니다.

필수 인자

argparse를 사용하여 특정 인자가 반드시 제공되도록 요구할 수 있습니다. 이를 위해 add_argument() 메서드를 사용할 때 required=True 옵션을 설정합니다. 다음은 add_argument() 메서드를 사용하여 필수 인자를 추가하는 예시입니다:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("filename", help="파일명을 입력하세요", type=str, required=True)
args = parser.parse_args()

위의 예시에서 filename은 필수 인자이므로, 사용자는 명령줄에서 해당 인자를 제공하지 않으면 에러 메시지가 표시됩니다.

선택적 인자와 기본값

argparse를 사용하여 선택적 인자를 추가할 수도 있습니다. 이를 위해 add_argument() 메서드의 default 옵션을 설정하여 인자의 기본값을 지정할 수 있습니다. 아래는 선택적 인자와 기본값을 사용하는 예시입니다:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--verbose", help="추가적인 디버그 정보를 출력합니다.", action="store_true", default=False)
args = parser.parse_args()

위의 예시에서 --verbose는 선택적 인자이며, action="store_true" 옵션을 통해 인자가 제공되었을 때 True로 설정됩니다. 인자가 제공되지 않으면 기본값인 False가 유지됩니다.

유효성 검사

argparse를 사용하여 사용자 입력을 유효성 검사할 수도 있습니다. 이를 위해 typechoices 옵션을 사용할 수 있습니다. type 옵션을 사용하여 인자가 원하는 데이터 형식으로 변환되도록 지정할 수 있습니다. choices 옵션을 사용하여 허용 가능한 값의 목록을 지정할 수 있습니다. 아래는 유효성 검사를 사용하는 예시입니다:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("age", help="나이를 입력하세요", type=int, choices=range(1, 100))
args = parser.parse_args()

위의 예시에서 age는 필수 인자로 정수 형식으로 입력되어야 하며, 1부터 100 사이의 값이어야 합니다. 그렇지 않으면 argparse가 에러 메시지를 표시합니다.

커스텀 유효성 검사

argparse를 사용하여 사용자 정의 함수를 사용하여 커스텀 유효성 검사를 수행할 수도 있습니다. 이를 위해 type 옵션 대신 metavar 옵션을 사용하고, choicestype 옵션을 사용하여 함수를 지정합니다. 아래는 커스텀 유효성 검사를 사용하는 예시입니다:

import argparse

def positive_integer(value):
    ivalue = int(value)
    if ivalue <= 0:
        raise argparse.ArgumentTypeError(f"{value}은 양의 정수여야 합니다.")
    return ivalue

parser = argparse.ArgumentParser()
parser.add_argument("count", help="숫자를 입력하세요", type=positive_integer)
args = parser.parse_args()

위의 예시에서 count는 양의 정수여야 합니다. 커스텀 함수 positive_integer()은 입력된 값이 양의 정수가 아닌 경우 에러를 발생시킵니다.

argparse 모듈을 사용하면 사용자 입력을 검증하여 더 안정적인 명령줄 인터페이스를 작성할 수 있습니다. 필수 인자, 선택적 인자, 유효성 검사와 같은 기능을 사용하여 올바른 입력을 보장할 수 있습니다.


이 포스트는 Python의 argparse 모듈을 사용하여 사용자 입력을 검증하는 방법을 알려줍니다. argparse에 대한 자세한 내용과 다양한 옵션에 대해 자세히 알아보려면 Python 공식 문서를 참조하십시오.