Python에서 Argparse의 인수 확인

Ammar Ali 2023년6월21일
  1. Python에서 argparse의 인수 확인
  2. argparse 선택적 인수가 설정되어 있는지 확인
Python에서 Argparse의 인수 확인

이 튜토리얼에서는 argparse의 사용에 대해 설명하고 Python에서 조건문과 인수 이름을 사용하여 argparse에 인수가 있는지 확인합니다.

Python에서 argparse의 인수 확인

Python의 argparse 라이브러리는 사용자 친화적인 인터페이스를 작성하기 위해 명령줄에서 사용됩니다. 예를 들어 스크립트 이름을 사용하여 스크립트를 실행하고 스크립트를 실행하는 데 필요한 인수를 제공할 수 있습니다.

스크립트 파일의 이름 뒤에 인수를 추가할 수 있으며 argparse 라이브러리는 이러한 인수를 필요한 작업을 수행하기 위해 스크립트 내에서 사용할 수 있는 개체로 변환합니다. 사용자를 돕기 위해 각 인수와 함께 도움말, 사용법 및 오류 메시지를 첨부할 수도 있습니다.

예를 들어 사용자가 잘못된 인수를 입력하면 argparse 라이브러리에 오류가 표시되고 사용자가 인수를 입력하는 방법이 표시됩니다. 예를 들어 argparse 라이브러리의 간단한 예를 살펴보겠습니다.

아래 코드를 참조하십시오.

import argparse

My_parser = argparse.ArgumentParser()
My_parser.parse_args()

출력:

PS C:\Users\ammar> python test.py -h
usage: test.py [-h]

optional arguments:
  -h, --help  show this help message and exit

위의 스크립트를 실행하려면 cmd(명령 프롬프트)에 python test.py -h를 작성하고 Windows의 시스템 경로 또는 환경 변수에 Python이 추가되었는지 확인해야 합니다. 추가되지 않은 경우 python.exe 파일의 전체 경로를 사용할 수 있습니다.

또한 명령 프롬프트의 현재 디렉터리가 Python 파일의 디렉터리로 설정되어 있는지 확인해야 합니다. 그렇지 않은 경우 Python 파일의 전체 경로를 제공해야 합니다.

예를 들어 시스템 경로에 Python을 추가해야 하고 Python 파일의 현재 디렉토리에도 없다고 가정해 보겠습니다. 위 출력의 첫 번째 줄을 아래 줄로 변경해야 합니다.

& C:/Users/ammar/python.exe "c:/Users/ammar/test.py" -h

위의 줄은 Windows PowerShell에서 테스트되었으며 cmd의 경우 줄 시작 부분에서 &를 제거해야 합니다. 위의 출력에서 도움말에 하나의 인수만 사용된 것을 볼 수 있습니다.

add_argument() 함수를 사용하여 인수 구문 분석기에 인수를 추가할 수 있습니다. 두 가지 유형의 인수를 설정할 수 있습니다. 하나는 위치 인수이고 다른 하나는 선택적 인수입니다.

옵션으로 만들려면 인수 앞에 단일 - 또는 이중 하이픈 --을 사용해야 합니다. help 인수를 사용하고 해당 값을 add_argument() 함수 내부의 문자열로 설정하여 인수에 대한 도움말을 추가할 수도 있습니다.

ArgumentParser() 함수 내부의 설명 및 에필로그 인수를 사용하여 도움말 섹션 전후에 텍스트를 추가할 수 있습니다. parse_args()는 명령 프롬프트에 전달된 인수를 개체로 변환하고 나중에 작업을 수행하는 데 사용할 수 있도록 반환합니다.

예를 들어 사용자로부터 문자열 인수를 받아 표시해 보겠습니다. 아래 코드를 참조하십시오.

import argparse
import string

My_parser = argparse.ArgumentParser(
    description="text before help.....", epilog="text after help....."
)
My_parser.add_argument("firstArg", help="You can use string here", type=str)
My_args = My_parser.parse_args()

print(My_args.firstArg)

출력:

PS C:\Users\ammar> python test.py
usage: test.py [-h] firstArg
test.py: error: the following arguments are required: firstArg


PS C:\Users\ammar> python test.py -h
usage: test.py [-h] firstArg

text before help.....

positional arguments:
  firstArg    You can use string here

optional arguments:
  -h, --help  show this help message and exit

text after help.....


PS C:\Users\ammar> python test.py hello
hello

위의 Python 파일을 세 번 실행했으며 출력에서 결과를 볼 수 있습니다. 처음에는 인수 없이 파일을 실행했는데 인수가 필요하다는 오류 메시지가 전달되지 않았습니다.

두 번째로 도움말에 사용되는 -h 인수로 스크립트를 실행했으며 코드는 스크립트의 사용법과 도움말을 표시합니다. 명령 프롬프트에 표시된 문자열을 사용하여 스크립트를 세 번째로 실행했습니다.

add_argument() 함수의 type 인수를 사용하여 문자열의 str 및 정수 데이터 유형의 int와 같이 인수의 데이터 유형을 설정할 수 있습니다. 전달된 모든 인수는 My_args 변수에 저장되며 이 변수를 사용하여 특정 인수가 전달되었는지 여부를 확인할 수 있습니다.

argparse 선택적 인수가 설정되어 있는지 확인

선택적 인수의 경우 인수가 전달되지 않으면 parse_args() 메서드는 해당 특정 인수에 대해 None을 반환합니다. 조건문을 사용하여 인수가 None인지 여부를 확인할 수 있으며 인수가 None인 경우 인수가 전달되지 않았음을 의미합니다.

예를 들어 선택적 인수를 추가하고 인수가 전달되었는지 여부를 확인하고 그에 따라 결과를 표시해 보겠습니다. 아래 코드를 참조하십시오.

import argparse
import string

My_parser = argparse.ArgumentParser(
    description="text before help.....", epilog="text after help....."
)
My_parser.add_argument("-firstArg", help="You can use string here", type=str)
My_args = My_parser.parse_args()

if My_args.firstArg is not None:
    print("Argument passed")
else:
    print("No Argument passed")

출력:

PS C:\Users\ammar> python test.py
No Argument passed

PS C:\Users\ammar> python test.py -firstArg hello
Argument passed

인수를 포함하거나 포함하지 않고 위의 스크립트를 두 번 실행하고 그에 따라 텍스트를 표시했습니다. 조건문과 함께 is not Noneis None 문을 사용하여 인수가 전달되었는지 여부를 결정할 수 있습니다.

선택적 인수의 경우 인수를 전달하기 전에 해당 이름도 사용해야 합니다. 확인하려는 인수에 기본값이 설정되어 있지 않은지 확인하십시오. 기본값의 경우 인수가 None이 되지 않기 때문입니다.

예를 들어 add_argument() 함수 내부에 default 키워드를 사용하여 위 코드에서 기본값을 추가하고 위 절차를 반복해 봅시다. 아래 코드를 참조하십시오.

import argparse
import string

My_parser = argparse.ArgumentParser(
    description="text before help.....", epilog="text after help....."
)
My_parser.add_argument(
    "-firstArg", help="You can use string here", type=str, default="default_value"
)
My_args = My_parser.parse_args()

if My_args.firstArg is not None:
    print("Argument passed")
else:
    print("No Argument passed")

출력:

PS C:\Users\ammar> python test.py
Argument passed

PS C:\Users\ammar> python test.py -firstArg hello
Argument passed

위의 출력에서 인수를 전달하지 않으면 코드가 기본값 때문에 전달된 인수를 계속 표시한다는 것을 관찰할 수 있습니다. add_argument() 함수를 여러 번 사용하여 여러 인수를 추가할 수 있습니다.

사용자의 입력 선택을 제한하려면 add_argument() 내부에서 choices 인수를 사용하고 해당 값을 스크립트에 인수로만 전달할 수 있는 값 목록으로 설정할 수 있습니다. .

작가: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook