파이썬 sys.argv 사용법 완벽 정리, 명령줄 인자 처리 실전 예제로 이해하기
🐍 터미널에서 인자 받아 처리하는 파이썬 자동화의 핵심 기능을 배워보세요
파이썬을 사용하다 보면 GUI 환경보다 터미널에서 스크립트를 실행할 일이 더 많아지죠.
특히 반복 작업을 자동화하거나 간단한 유틸리티 도구를 만들 때는 실행 시 전달되는 명령줄 인자를 효율적으로 처리하는 것이 중요합니다.
그럴 때 가장 먼저 배우게 되는 기능이 바로 sys.argv입니다.
이 글에서는 초보자도 쉽게 이해할 수 있도록 sys.argv의 개념부터 실제 사용 예제, 주의할 점까지 차근차근 안내해드릴게요.
실전 중심으로 설명드리니, 파이썬 유틸리티나 CLI 툴 제작을 고민하고 있다면 꼭 끝까지 읽어보세요.
sys.argv는 파이썬 sys 모듈에 포함된 기능으로, 실행 시 전달되는 인자를 리스트 형태로 받아올 수 있습니다.
이 기능 덕분에 터미널에서 실행 옵션에 따라 다양한 동작을 구현할 수 있어 자동화 스크립트, 간단한 CLI 앱, 테스트용 코드 작성 등에 널리 활용되고 있어요.
본문에서는 sys.argv의 기본적인 사용 방법부터, 예외 처리, 실제 유용한 실전 예제까지 총망라해 소개해드릴 예정입니다.
📋 목차
🧩 sys.argv란 무엇인가요?
파이썬에서 sys.argv는 스크립트가 실행될 때 명령줄에서 입력한 인자(argument)를 리스트 형태로 받을 수 있도록 도와주는 기능입니다.
이 기능은 sys 모듈에 포함되어 있으며, 외부에서 실행 명령과 함께 전달된 값을 파이썬 코드 안에서 활용하고자 할 때 매우 유용합니다.
예를 들어, 사용자가 터미널에서 다음과 같이 입력했다고 가정해볼게요.
python hello.py user123
이 경우 sys.argv에는 다음과 같은 리스트가 담기게 됩니다.
['hello.py', 'user123']
여기서 중요한 점은 첫 번째 요소(index 0)는 항상 실행 중인 파이썬 파일 이름이라는 것!
두 번째 요소부터 실제 우리가 전달한 인자들이 순서대로 리스트에 포함됩니다.
💡 TIP: 인자의 개수는 len(sys.argv)으로 확인할 수 있고, 특정 위치의 인자는 sys.argv[1], sys.argv[2]처럼 인덱스를 활용해 접근할 수 있어요.
명령줄에서 입력받은 값을 바탕으로 조건 분기나 사용자 맞춤 기능을 구현할 수 있기 때문에, 데이터 처리, 자동화, 배치 작업, CLI 도구 제작 시 필수적으로 활용되는 기능입니다.
🧪 기본 사용법과 인자의 구조
sys.argv는 매우 간단하면서도 강력한 기능을 제공합니다.
처음 파이썬을 접하는 분들도 어렵지 않게 활용할 수 있도록, 기본 구조와 사용 예를 하나하나 짚어드릴게요.
기본적으로 sys.argv는 파이썬 스크립트가 실행될 때 뒤따르는 모든 문자열 인자를 리스트 형태로 저장합니다.
각 인자는 띄어쓰기 기준으로 구분되며, 리스트의 첫 번째 요소는 항상 스크립트 파일명이에요.
# sample.py
import sys
print(sys.argv)
이 코드를 다음처럼 실행하면:
python sample.py hello world
출력 결과는 다음과 같습니다:
['sample.py', 'hello', 'world']
즉, 인자는 각각 sys.argv[1], sys.argv[2]로 접근할 수 있습니다.
이 값을 활용하여 조건문이나 반복문에서 다양한 동작을 구현할 수 있죠.
- 📌
sys.argv는 문자열 리스트로 반환되므로, 숫자형 계산 시에는 형 변환 필요 - 📌인자 수가 부족한 경우 IndexError 발생 가능성 있음
- 📌항상
len(sys.argv)을 활용해 길이를 체크하고, 조건문으로 안전하게 처리 권장
지금까지 sys.argv의 기본 구조와 활용 방식을 살펴봤어요.
다음은 실무에서 정말 유용하게 쓸 수 있는 실전 예제들을 함께 알아보겠습니다.
🛠️ 실전 예제로 알아보는 활용법
이제 sys.argv의 기본 개념을 이해했다면, 실전에서 어떻게 사용할 수 있는지 예제를 통해 살펴볼 차례입니다.
터미널에서 전달받은 인자를 바탕으로 동작하는 파이썬 스크립트는 아주 다양한 방식으로 활용될 수 있어요.
예를 들어, 두 숫자를 입력받아 덧셈 결과를 출력하는 간단한 계산기를 만들어볼 수 있습니다.
# calc.py
import sys
if len(sys.argv) != 3:
print("❌ 두 개의 숫자를 입력하세요.")
else:
num1 = int(sys.argv[1])
num2 = int(sys.argv[2])
print("✅ 결과:", num1 + num2)
이 코드를 터미널에서 다음처럼 실행하면:
python calc.py 5 7
출력 결과는 아래와 같아요.
✅ 결과: 12
이처럼 간단한 수치 계산부터 시작해서, 파일 경로를 전달받아 특정 파일을 읽거나 쓰는 작업에도 응용할 수 있습니다.
💬 실전에서는 스크립트 이름만 바꿔도 다양한 자동화 작업에 활용 가능하니, 본인만의 CLI 도구를 만들어보는 것도 좋은 연습입니다.
한 줄의 명령어로 특정 데이터를 불러오거나, 사용자 입력에 따라 다른 결과를 출력하는 터미널 기반 파이썬 프로그램을 구현해보세요.
다음 단계에서는 sys.argv 사용 시 주의해야 할 점을 정리해드릴게요.
⚠️ 예외 처리와 주의할 점
sys.argv를 사용할 때 꼭 기억해야 할 중요한 점들이 있습니다.
명령줄 인자는 사용자가 직접 입력하는 값이기 때문에 예외 상황에 대비한 코드 작성이 매우 중요해요.
가장 흔한 실수는 인자의 개수가 예상보다 적을 때 발생하는 IndexError입니다.
예를 들어, 아래와 같은 코드를 보시죠.
import sys
print("사용자 이름:", sys.argv[1])
이 코드를 실행할 때 python script.py처럼 인자를 입력하지 않으면 프로그램은 오류를 내고 종료됩니다.
그래서 반드시 len(sys.argv)로 인자 개수를 먼저 확인해야 합니다.
⚠️ 주의: 사용자 입력을 그대로 사용하는 경우 보안상 취약점이 생길 수 있으니, 필요한 경우 검증 또는 필터링을 적용하세요.
또한 sys.argv로 받은 값은 항상 문자열(str) 타입이라는 점도 잊지 마세요.
숫자 연산을 할 경우 int()나 float() 등의 변환이 필요합니다.
num = int(sys.argv[1]) # 문자열을 정수로 변환
이런 기본적인 방어 코드가 없으면 예상치 못한 입력에서 프로그램이 쉽게 중단될 수 있어요.
실제로 배포용 스크립트를 만들 때는 예외 처리 구문 try ~ except와 함께 사용하는 것이 일반적입니다.
💎 핵심 포인트:
사용자가 직접 입력하는 명령줄 인자는 항상 오류가 발생할 가능성을 고려해야 합니다.
len() 체크, try-except 예외 처리, type casting은 필수 습관입니다.
sys.argv는 단순하지만 민감하게 작동하는 기능이므로, 예외에 대비한 안전한 코드를 작성하는 것이 결국 실력의 차이로 이어진답니다.
💡 argparse 모듈과의 차이점
sys.argv는 간단한 명령줄 인자 처리에는 충분하지만, 인자가 많아지거나 다양한 옵션을 지원하려면 argparse 모듈을 사용하는 것이 더 효율적입니다.
파이썬 표준 라이브러리에 포함되어 있는 argparse는 보다 정교하고 안정적인 CLI 개발을 도와주는 모듈이에요.
🔍 sys.argv vs argparse 비교
| 기능 | sys.argv | argparse |
|---|---|---|
| 복잡한 인자 처리 | 직접 파싱해야 함 | 자동 처리 및 도움말 지원 |
| 코드 가독성 | 낮음 | 높음 |
| 사용자 친화성 | 입력 오류 시 친절하지 않음 | 도움말 메시지 자동 생성 |
argparse는 옵션 인자(-h, –help)를 자동으로 제공해주고, 인자의 타입도 지정할 수 있으며, 설명까지 함께 출력할 수 있어서 배포용 CLI 도구 개발에 매우 적합합니다.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("name", help="사용자 이름을 입력하세요")
args = parser.parse_args()
print("안녕하세요,", args.name)
이제 터미널에서 python script.py 홍길동을 실행하면 친절하게 이름을 받아 출력해주고, -h 옵션으로도 설명을 확인할 수 있어요.
💡 TIP: sys.argv는 학습 목적이나 단순한 스크립트에 적합하고, argparse는 본격적인 CLI 프로그램 개발에 알맞습니다.
두 방식 모두 장단점이 있으니 프로젝트의 규모나 목적에 따라 적절히 선택해보세요.
이제 자주 묻는 질문들을 정리해볼게요.
❓ 자주 묻는 질문 (FAQ)
sys.argv는 어떤 상황에서 사용하는 게 좋을까요?
자동화, 배치 작업, 간단한 CLI 유틸리티 제작 시 유용하게 활용돼요.
argv 리스트에서 첫 번째 인자는 어떤 값인가요?
예: [‘script.py’, ‘인자1’, ‘인자2’] 형태에서 ‘script.py’가 첫 번째 요소입니다.
인자가 입력되지 않으면 어떤 문제가 발생하나요?
항상 len(sys.argv)로 길이를 체크하고 조건문으로 예외 상황을 처리해야 합니다.
sys.argv로 받은 값을 숫자로 바꿔도 되나요?
다만 모든 값은 문자열로 들어오기 때문에 int(), float() 등의 형 변환을 반드시 해주어야 합니다.
여러 인자를 동시에 받을 수도 있나요?
공백으로 구분된 인자들을 모두 리스트에 저장하므로 원하는 만큼 인자를 입력받아 사용할 수 있어요.
argparse와 함께 사용해도 되나요?
argparse는 자체적으로 인자 파싱을 처리하므로 중복될 필요는 없어요.
GUI 환경에서도 sys.argv를 쓸 수 있나요?
윈도우 환경에서도 동일하게 작동하나요?
윈도우에서도 명령 프롬프트(cmd)나 PowerShell에서 문제없이 사용할 수 있어요.
🐍 명령줄 인자 활용으로 자동화 스크립트의 효율을 높이세요
파이썬의 sys.argv는 단순한 기능처럼 보이지만, 터미널 기반 스크립트나 유틸리티 제작에서 매우 중요한 역할을 합니다.
명령줄에서 인자를 받아 그에 따라 동작을 다르게 구현하는 방식은 자동화, 반복 작업, 파일 처리 등 다양한 분야에서 강력한 효율을 발휘해요.
이 글에서는 sys.argv의 개념부터 시작해서 기본 구조, 실전 예제, 예외 처리 방법, 그리고 argparse와의 차이점까지 단계적으로 정리해드렸습니다.
len()과 type casting, try-except 같은 안정성을 위한 기법도 함께 익혀두시면 실전에서도 무리 없이 사용할 수 있어요.
처음에는 어렵게 느껴질 수 있지만, 직접 몇 번 작성해보면 생각보다 직관적이고 간단하게 활용할 수 있습니다.
이제 여러분도 나만의 터미널 기반 도구나 스크립트를 직접 만들어보는 데 도전해보세요!
🏷️ 관련 태그 : 파이썬기초, sys모듈, 명령줄인자, 터미널스크립트, 자동화도구, CLI개발, 파이썬자동화, 인자처리, argparse, 파이썬팁