[파이썬] argparse add_subparsers()로 서브명령어 추가

Python의 argparse 모듈은 명령행 인수 파싱을 쉽게 구현할 수 있도록 도와주는 강력한 도구입니다. argparseadd_subparsers() 메서드를 사용하면 서브명령어를 프로그램에 추가할 수 있습니다. 이 기능을 활용하면 단일 프로그램에서 여러 가지 작업을 수행할 수 있는 명령어 인터페이스를 만들 수 있습니다.

서브명령어란?

서브명령어는 주 명령어의 하위 명령어로, 프로그램의 다른 기능을 호출하거나 다른 동작을 수행하는데 사용됩니다. 예를 들어, git 명령어에서 commit, add, push 등의 서브명령어를 사용하여 다양한 작업을 수행할 수 있습니다.

add_subparsers() 사용법

argparse.ArgumentParser 클래스의 add_subparsers() 메서드를 사용하여 서브명령어를 추가할 수 있습니다. 아래는 간단한 예제 코드입니다.

import argparse

# ArgumentParser 인스턴스 생성
parser = argparse.ArgumentParser()

# 서브명령어 파서 생성
subparsers = parser.add_subparsers(dest='command')

# 서브명령어 'add'를 추가
add_parser = subparsers.add_parser('add', help='Add two numbers')
add_parser.add_argument('num1', type=int)
add_parser.add_argument('num2', type=int)

# 서브명령어 'subtract'를 추가
subtract_parser = subparsers.add_parser('subtract', help='Subtract two numbers')
subtract_parser.add_argument('num1', type=int)
subtract_parser.add_argument('num2', type=int)

# 실행 인수를 파싱
args = parser.parse_args()

# 서브명령어에 따라 동작 수행
if args.command == 'add':
    result = args.num1 + args.num2
    print(f'The sum is: {result}')
elif args.command == 'subtract':
    result = args.num1 - args.num2
    print(f'The difference is: {result}')

위의 코드에서 add_subparsers()subparsers라는 ArgumentParser 객체를 반환합니다. add_parser() 메서드를 사용하여 각 서브명령어를 추가할 수 있습니다. 각 서브명령어 파서에는 해당 서브명령어에 필요한 인수들을 추가할 수 있습니다.

parse_args() 메서드를 호출하면 명령행 인수를 파싱하여 해당 서브명령어에 따라 동작을 수행할 수 있습니다. args.command를 확인하여 어떤 서브명령어가 선택되었는지 판단할 수 있습니다.

이제 Python 스크립트를 실행할 때 서브명령어와 필요한 인수를 함께 전달하여 프로그램을 실행할 수 있습니다.

$ python my_program.py add 10 20
The sum is: 30

$ python my_program.py subtract 20 10
The difference is: 10

위와 같이 서브명령어를 사용하여 다양한 동작을 수행할 수 있습니다.

argparseadd_subparsers()를 사용하여 서브명령어를 추가하는 방법에 대해 알아보았습니다. 이를 활용하여 다양한 기능을 제공하는 명령어 인터페이스를 만들어 보세요. Happy coding!