[Python] 파이썬 명령 인자값 받는 방법 (sys.argv)

    파이썬으로 작성된 파일을 실행할 때 인수(argument, 인자값)를 받아서 처리를 해야 되는 경우가 있다. 예를 들어, 로컬과 개발 등의 환경이 서로 달라서 인자값을 줘야 한다던지 같은 파일을 다른 목적으로 처리를 해야 할 때 인자값을 줄 수가 있을 것이다. 이럴때 파이썬에서는 sys.argv에 값을 담아 처리를 할 수 있게 된다.

     

    sys.argv에서 sys는 파이썬 인터프리터와 관련된 정보와 기능을 제공하는 모듈 혹은 라이브러리이며, argv는 위에 적은 것처럼 argument를 의미한다. 

     

    파이썬에서 명령행 인자값 받기

     

    예시

    python hello.py neo

    첫번째로 위와 같은 command에서 실행을 한다고 가정을 하며 hello.py 다음에 1개의 인자값을 줬는데 neo라는 인자값이다. 이 인자값을 어떻게 프로그램이 처리를 하는지 알아보도록 한다.

     

    import sys
    
    print(sys.argv)

    hello.py에 위와 같이 sys라는 라이브러리를 import 한 후, sys.argv라는 것을 print로 출력해보았다.

    (base) C:\python>python hello.py neo
    ['hello.py', 'neo']

    sys.argv를 프린트로 출력을 할 경우 이와 같이 python 이후에 작성된 인자값들이 모조리 출력되고 있다. 즉 neo만 출력된 것이 아니라 hello.py도 출력이 된다는 것을 명심해야 된다. 우리가 보통 필요한건 hello.py 이후에 나오는 인자값들만 필요할테니 이럴때는 다음과 같이 출력해본다.

     

    import sys
    
    for v in range(1, len(sys.argv)):
        print(sys.argv[v])
    
    #neo

    이렇게 값을 조절할 경우, 1번째부터 값을 출력할 수 있다. 그러나 인자값을 준다는 것은 개발자 혹은 운영자가 인자값의 위치마다 어떤 값을 넣어야 될지 명확하게 알고 있다는 의미이니 이번에는 명확하게 안다는 전제하여 인자값을 보편적으로 주는 방법을 테스트 해본다.

     

    보편적으로 인자값을 받는 방법

    import sys
    
    val1 = int(sys.argv[1])
    val2 = int(sys.argv[2])
    
    print(val1, ' 곱하기 ', val2, ' 은? ', (val1*val2))
    (base) C:\python> python hello.py 3 4
    3  곱하기  4  은?  12

    위 예시는 인자값을 여러개(2개) 받았으며 값을 명확히 알고 있어서 처리를 하는 방식이다. 이와 같은 방법이 훨씬 많이 사용이 되며 아규먼트를 받게 되면서 매우 간단한 프로그램이 폭넓게 사용될 수 있을 것이다.

     

     

     

    반응형

    댓글

    Designed by JB FACTORY