Python - 명령줄 인수
안녕하세요, 더 나은 프로그래머를 꿈꾸는 여러분! 오늘, 우리는 Python의 명령줄 인수의 흥미로운 세계로 여행을 떠날 거예요. 프로그래밍에 새로운 사람이라도 걱정하지 마세요; 저는 경험豊富한 교사의 세심함과 인내로 여러분을 각 단계마다 안내할 거예요. 그럼 시작해볼까요!
명령줄 인수란 무엇인가요?
요리사로 상상해봅시다. 항상 같은 요리를 만드는 것이 아니라, 고객들이 요청하는 것에 따라 재료를 변경할 수 있다면 어떨까요? 프로그래밍에서 명령줄 인수는 고객들의 특별 요청과 유사합니다. 이를 통해 우리는 Python 프로그램을 실행할 때 다른 입력을 제공할 수 있어, 코드가 더 유연하고 강력해집니다.
Python 명령줄 인수
Python에서는 sys
모듈을 사용하여 쉽게 명령줄 인수에 접근할 수 있습니다. 간단한 예제부터 시작해볼까요:
import sys
print("Hello, I'm your first Python program!")
print("Number of arguments:", len(sys.argv))
print("Arguments:", str(sys.argv))
이를 hello_args.py
로 저장하고 명령줄에서 이렇게 실행해봅시다:
python hello_args.py arg1 arg2 arg3
다음과 같은 출력이 나올 것입니다:
Hello, I'm your first Python program!
Number of arguments: 4
Arguments: ['hello_args.py', 'arg1', 'arg2', 'arg3']
이를 분석해봅시다:
-
sys.argv
는 명령줄 인수를 포함하는 리스트입니다. - 첫 번째 항목(
sys.argv[0]
)은 항상 스크립트 자신의 이름입니다. - 나머지 항목들은 우리가 전달한 인수들입니다.
특정 인수에 접근하기
이제 이 인수들을 사용하여 프로그램을 만들어봅시다:
import sys
if len(sys.argv) < 2:
print("Please provide your name as an argument!")
else:
name = sys.argv[1]
print(f"Hello, {name}! Welcome to the world of command-line arguments!")
이를 greet.py
로 저장하고 실행해봅시다:
python greet.py Alice
출력:
Hello, Alice! Welcome to the world of command-line arguments!
인수를 주지 않고 실행한 경우:
python greet.py
출력:
Please provide your name as an argument!
이 예제는 우리가 프로그램을 어떻게 인터랙티브하고 사용자 친화적으로 만들 수 있는지 보여줍니다!
실행 시 인수 전달
이제 더 praktische 예제를 만들어봅시다. 간단한 계산기를 만들어볼까요:
import sys
def calculator(operation, num1, num2):
if operation == 'add':
return num1 + num2
elif operation == 'subtract':
return num1 - num2
elif operation == 'multiply':
return num1 * num2
elif operation == 'divide':
return num1 / num2 if num2 != 0 else "Error: Division by zero"
else:
return "Invalid operation"
if len(sys.argv) != 4:
print("Usage: python calculator.py <operation> <num1> <num2>")
else:
operation = sys.argv[1]
try:
num1 = float(sys.argv[2])
num2 = float(sys.argv[3])
result = calculator(operation, num1, num2)
print(f"Result: {result}")
except ValueError:
print("Error: Please provide valid numbers")
이를 calculator.py
로 저장하고 사용해봅시다:
python calculator.py add 5 3
출력:
Result: 8.0
이 계산기 예제는 우리가 어떻게 다른 입력을 받아서 다양한 연산을 수행할 수 있는 강력한 도구를 만들 수 있는지 보여줍니다.
Python getopt 모듈
더 복잡한 명령줄 인터페이스를 위해 Python는 getopt
모듈을 제공합니다. 이는 우리의 사용자가 제공할 수 있는 다양한 옵션과 인수를 정리하는 능력 있는 비서와 유사합니다.
예제를 보여드리자:
import sys
import getopt
def main(argv):
inputfile = ''
outputfile = ''
try:
opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
except getopt.GetoptError:
print('test.py -i <inputfile> -o <outputfile>')
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print('test.py -i <inputfile> -o <outputfile>')
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
print('Input file is:', inputfile)
print('Output file is:', outputfile)
if __name__ == "__main__":
main(sys.argv[1:])
이를 file_processor.py
로 저장하고 실행해봅시다:
python file_processor.py -i input.txt -o output.txt
출력:
Input file is: input.txt
Output file is: output.txt
getopt
모듈은 짧은 옵션(-i, -o)과 긴 옵션(--ifile, --ofile)을 처리할 수 있게 해주어 프로그램을 더 사용자 친화적으로 만듭니다.
Python argparse 모듈
더 복잡한 명령줄 인터페이스를 위해 Python는 argparse
모듈을 제공합니다. 이는 우리의 명령줄 요구에 맞춘 전체 서비스 레스토랑과 유사합니다!
예제를 보여드리자:
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))
이를 integer_processor.py
로 저장하고 사용해봅시다:
python integer_processor.py 1 2 3 4
출력:
4
또는 --sum 옵션을 사용한 경우:
python integer_processor.py 1 2 3 4 --sum
출력:
10
argparse
모듈은 자동으로 도움 메시지를 생성하고, 에러를 처리하며, 더 복잡한 인수 구조를 허용합니다.
방법 비교
여기 우리가 논의한 방법들의 비교를 살펴보겠습니다:
Method | Complexity | Use Case |
---|---|---|
sys.argv | Simple | Basic argument handling |
getopt | Moderate | Short and long options |
argparse | Advanced | Complex CLIs with automatic help |
기억해주세요, 가장 좋은 방법은 여러분의 구체적인 요구에 따라 다릅니다. 간단한 sys.argv
으로 시작하고, 프로그램이 더 복잡해지면 getopt
이나 argparse
를 고려해볼 수 있습니다.
결론적으로, 명령줄 인수는 여러분의 Python 도구 상자에 강력한 도구입니다. 이를 통해 여러분은 다양한 입력과 사용자 요구에 맞춘 유연하고 상호작용적인 프로그램을 만들 수 있습니다. Python 여정을 계속하면서, 이러한 기술을 사용하여 놀라운 소프트웨어를 구축하는 무수한 방법을 찾을 것입니다. 코딩을 즐겁게, 여러분의 명령줄 모험이 흥미로운 길을 이어지길 바랍니다!
Credits: Image by storyset