파이썬(Python) input()대신 명령 인자값 받아 처리하기 argv

프로그래밍을 하다보면 명령줄을 통해 프로그램에 값을 전달해야하는 경우가 종종 있습니다.
C언어에서는 argc와 argv를 통해 이를 처리할 수 있는데 명령 인자를 받아 처리하는 방법에 대해 자세히 알고 싶다면 이전에 작성한 글을 참고해주세요 (C언어 main함수의 매개변수 argc, argv)
 
파이썬에서도 C언어와 비슷한 방식으로 sys.argv를 사용하여 명령 인자값을 처리할 수 있습니다. 이번 글에서는 파이썬에서 sys.argv를 활용하는 방법을 예제와 함께 알아보겠습니다.
 
 

파이썬 sys.argv

파이썬에서는 sys 모듈의 argv 리스트를 사용하여 명령줄 인자를 처리할 수 있습니다. 
 

python file.py sam

예를들어 터미널에 다음과 같은 방식으로 파이썬 파일을 실행할 수 있습니다. 
명령어에서 "file.py"는 실행할 파이썬 파일 이름이고, "sam"은 전달되는 인자값 입니다.
 
 

import sys
print(sys.argv)


> ['file.py', 'sam'] #출력

파이썬에서 위에 2줄을 작성하고 실행하면 ['file.py', 'sam'] 가 출력됩니다.
 
여기서 sys.argv는 리스트 형태로, 첫 번째 요소(sys.argv[0])는 실행된 파일의 이름(예시 : file.py)을 나타내고, 그 뒤에 있는 요소들(sys.argv[1], sys.argv[2], ...)은 명령줄 인자(예시 :sam)들이 담깁니다.
 
 

명령 인자값을 이용한 덧셈 프로그램

python sum.py 5 4

간단한 덧셈 프로그램을 만들어 sys.argv를 활용하는 방법에 대해서 알아보겠습니다.
명령줄 인자에 'sum.py'라는 실행 파일의 이름을 지정하였고, 프로그램을 이용할 연산할 숫자 '5'와 '4'를 각각 입력하였습니다.
 

import sys

num1,num2 = sys.argv[1],sys.argv[2]
print(int(num1)+int(num2))

이 코드에서는 sys.argv[1]sys.argv[2]에 각각 '5'와 '4'가 들어가고, 이를 int 타입으로 변환하여 더한 후, 결과를 출력합니다. 결과적으로 '9'가 출력됩니다.
 
 

유효한 명령 인자 개수 체크하기

 

import sys

if len(sys.argv) != 3:
    print("사용법: python sum.py num1 num2")
else:
    try:
        num1 = int(sys.argv[1])
        num2 = int(sys.argv[2])
        print(num1 + num2)
    except ValueError:
        print("정수형 형태의 값을 입력하세요.")

명령어를 실행할때 필요한 인자의 개수가 부족하게 전달될 경우 IndexError가 발생할 수 있습니다. 
그래서 코드를 작성할 때 입력되는 인자 개수를 체크하는게 좋습니다.
 
위 코드에서는 입력된 명령어 인자의 개수가 3이 아닌경우(파일이름, num1,num2) 올바른 명령어를 입력하도록 사용법을 출력하고, 값에 대한 입력 오류가 발생할 경우 올바른 값을 입력할 수 있도록 유도할 수 있습니다.

Top