Python을 사용하여 명령줄 인수 구문 분석

Vaibhav Vaibhav 2022년1월22일
Python을 사용하여 명령줄 인수 구문 분석

명령줄이나 셸에서 Python 프로그램을 실행하는 동안 문자열 형식의 값(기술적으로는 인수 또는 옵션)을 프로그램에 전달할 수 있습니다. 프로그램은 이러한 값에 액세스하고 실행을 수행하고 계산에 이 값을 사용할 수도 있습니다.

이 기사에서는 Python을 사용하여 이러한 명령줄 인수를 구문 분석하고 사용하는 방법에 대해 설명합니다.

optparse 모듈을 사용하여 명령줄 인수 구문 분석

optparse 모듈은 명령줄 옵션을 구문 분석하는 유연하고 편리한 Python 패키지입니다. 표준 Python에 내장되어 있습니다. 명령줄 옵션을 구문 분석하기 위해 선언적 방법을 사용합니다. 이 패키지를 사용하려면 먼저 OptionParser 클래스의 개체를 만든 다음 add_option() 메서드를 사용하여 가능한 옵션이나 인수에 대한 세부 정보를 추가해야 합니다. add_option() 메소드는 option(옵션 이름), type(옵션의 데이터 유형), help(옵션에 대한 도움말 텍스트) 및 default( 명령에 지정되지 않은 경우 옵션의 기본값). 사전 형태의 명령줄 명령에서 옵션과 해당 값을 가져오려면 parse_args() 메서드를 사용할 수 있습니다.

예제를 통해 이 라이브러리의 사용을 더 잘 이해하도록 합시다. -a, -b, -c의 세 가지 옵션을 확인하는 간단한 Python 프로그램을 구현합니다. 여기에서 -a-b는 피연산자를 나타내고 +는 연산자이며 -c는 본질적으로 대상 합계입니다. 또한 코드는 이러한 값을 확인하고 명령줄 명령에 값이 없으면 0 값을 할당하고 마지막으로 a + bc와 같은지 확인합니다. 또한 결과를 올바른 형식의 문자열로 인쇄합니다.

import optparse

parser = optparse.OptionParser()
parser.add_option("-a", help="First Number", default=0)
parser.add_option("-b", help="Second Number", default=0)
parser.add_option("-c", help="Sum", default=0)
options, args = parser.parse_args()
a = int(options.a)
b = int(options.b)
c = int(options.c)
s = a + b
print(f"{a} + {b} = {s} and {s} {'==' if s == c else '!='} {c}")

다음은 위의 코드에 대한 간략한 설명입니다. 먼저 OptionParser() 클래스 개체를 만들고 세 가지 대상 옵션에 대한 정보를 추가합니다. -a, -b, -c. 그런 다음 명령줄 또는 셸 명령을 탐색하여 필요한 옵션을 확인합니다. 마지막으로 모든 값을 별도의 변수에 저장하고 합계 또는 a + b를 계산하고 이를 대상 합계 또는 c와 비교합니다.

다음 명령에 대해 이 프로그램을 테스트해 보겠습니다.

python main.py -a 1 -b 2 -c 3
python main.py -a 1
python main.py -b 2
python main.py -c 3
python main.py 1 2 3
python main.py -a 1 2 3
python main.py 1 -b 2 3
python main.py 1 2 -c 3
python main.py 0 0 0
python main.py

출력:

1 + 2 = 3 and 3 == 3
1 + 0 = 1 and 1 != 0
0 + 2 = 2 and 2 != 0
0 + 0 = 0 and 0 != 3
0 + 0 = 0 and 0 == 0
1 + 0 = 1 and 1 != 0
0 + 2 = 2 and 2 != 0
0 + 0 = 0 and 0 != 3
0 + 0 = 0 and 0 == 0
0 + 0 = 0 and 0 == 0

출력에서 키워드 옵션이나 인수가 명령줄 또는 셸 명령에 제공되지 않은 경우 기본값이 고려된다는 것을 유추할 수 있습니다. 더 나은 분석을 위해 첫 번째 명령(python main.py -a 1 -b 2 -c 3)을 제외한 테스트 명령을 참조하십시오.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.