본문 바로가기

언어/Python

[ Python ] command line 실행 시 인수 사용하기

반응형

파이썬에서는 sys 모듈의 argv 리스트를 사용하여 명령줄 인수에 접근할 수 있습니다.
sys.argv는 명령줄에서 전달된 인수들을 문자열 형태로 저장하는 리스트입니다.
첫 번째 요소는 항상 스크립트의 이름이고, 그 이후의 요소들은 명령줄에서 전달된 인수들입니다.

다음은 명령줄 인수에 접근하는 방법과 예제를 소개합니다.

1. 기본 사용법

먼저 sys 모듈을 임포트합니다.

import sys

sys.argv 리스트를 사용하여 명령줄 인수에 접근할 수 있습니다.

import sys

# 명령줄 인수 출력
for arg in sys.argv:
    print(arg)

2. 예제

1. 단순 명령줄 인수 처리

# example.py
import sys

def main():
    # 첫 번째 인수는 스크립트 이름
    script_name = sys.argv[0]
    print(f"Script name: {script_name}")

    # 그 이후의 인수는 명령줄에서 전달된 인수들
    arguments = sys.argv[1:]
    print(f"Arguments: {arguments}")

if __name__ == "__main__":
    main()

위 스크립트를 실행하면:

$ python example.py arg1 arg2 arg3
Script name: example.py
Arguments: ['arg1', 'arg2', 'arg3']

2. 명령줄 인수를 사용하여 계산기 구현

# calculator.py
import sys

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

def multiply(a, b):
    return a * b

def divide(a, b):
    if b == 0:
        return "Cannot divide by zero"
    return a / b

def main():
    if len(sys.argv) != 4:
        print("Usage: python calculator.py <operation> <num1> <num2>")
        sys.exit(1)

    operation = sys.argv[1]
    num1 = float(sys.argv[2])
    num2 = float(sys.argv[3])

    if operation == 'add':
        result = add(num1, num2)
    elif operation == 'subtract':
        result = subtract(num1, num2)
    elif operation == 'multiply':
        result = multiply(num1, num2)
    elif operation == 'divide':
        result = divide(num1, num2)
    else:
        print("Unknown operation")
        sys.exit(1)

    print(f"The result is: {result}")

if __name__ == "__main__":
    main()

위 스크립트를 실행하면:

$ python calculator.py add 10 5
The result is: 15.0

$ python calculator.py divide 10 0
Cannot divide by zero

3. 고급 사용법: argparse 모듈

명령줄 인수를 보다 효율적으로 처리하기 위해 파이썬 표준 라이브러리에서 제공하는 argparse 모듈을 사용할 수 있습니다. argparse는 명령줄 인수의 파싱을 보다 간편하게 해줍니다.

argparse 사용 예제

# argparse_example.py
import argparse

def main():
    parser = argparse.ArgumentParser(description="Simple calculator")
    parser.add_argument("operation", type=str, help="Operation to perform: add, subtract, multiply, divide")
    parser.add_argument("num1", type=float, help="First number")
    parser.add_argument("num2", type=float, help="Second number")

    args = parser.parse_args()

    if args.operation == 'add':
        result = args.num1 + args.num2
    elif args.operation == 'subtract':
        result = args.num1 - args.num2
    elif args.operation == 'multiply':
        result = args.num1 * args.num2
    elif args.operation == 'divide':
        if args.num2 == 0:
            result = "Cannot divide by zero"
        else:
            result = args.num1 / args.num2
    else:
        result = "Unknown operation"

    print(f"The result is: {result}")

if __name__ == "__main__":
    main()

위 스크립트를 실행하면:

$ python argparse_example.py add 10 5
The result is: 15.0

$ python argparse_example.py divide 10 0
The result is: Cannot divide by zero

argparse 모듈을 사용하면 명령줄 인수를 보다 쉽게 정의하고, 기본값 설정, 도움말 메시지 제공 등을 통해 사용자 친화적인 인터페이스를 만들 수 있습니다.

반응형