파이썬에서 터미널(명령줄)로부터 여러 개의 인수를 받아 함수를 실행하려면 sys 모듈의 argv 기능을 사용해야 합니다. sys.argv는 명령줄에서 입력된 인수들을 문자열 리스트 형태로 가져오며, 첫 번째 요소(sys.argv[0])는 항상 스크립트 파일 이름 자체를 담고 있습니다.
따라서 실제 사용자가 입력한 인수는 sys.argv[1]부터 시작됩니다. 아래 예제를 통해 확인해 보겠습니다.
예제 코드
#fubar.py
import sys
def print_funcargs(arg1, arg2, arg3):
print arg1 + ' ' + arg2 + ' ' + arg3
if __name__ == "__main__":
a = sys.argv[1]
b = sys.argv[2]
c = sys.argv[3]
print_funcargs(a, b, c)
print sys.argv위 코드는 세 개의 인수를 받아 이를 하나의 문자열로 연결해 출력하는 함수를 정의하고 있습니다. 터미널에서 다음과 같이 실행합니다.
$ python fubar.py I adore books
실행 결과
I adore books ['fubar.py', 'I', 'adore', 'books']
동작 원리 설명
실행 결과를 살펴보면 두 줄이 출력되었습니다. 첫 번째 줄은 함수가 인수 세 개를 공백으로 연결해 출력한 결과이고, 두 번째 줄은 sys.argv 리스트 전체를 그대로 출력한 것입니다. 리스트에는 스크립트 이름인 'fubar.py'가 포함되어 있으며, 그 뒤에 터미널에서 입력한 'I', 'adore', 'books'가 순서대로 저장된 것을 볼 수 있습니다.
참고로 위 코드는 print 문을 사용하는 파이썬 2 기준입니다. 파이썬 3 환경이라면 print() 함수 형태로 작성해야 하며, 인수 개수가 부족할 경우 IndexError가 발생하므로 len(sys.argv)로 개수를 먼저 확인하는 것이 안전합니다.