Python 언어에서 명령행 인자는 sys.argv 라는 변수로 처리한다.
sys.argv는 모듈 sys에 속하는 변수 argv를 의미하며, 이는 명령행 실행시 옵션으로 입력된 인자들을 스트링 값으로 모아둔 리스트형의 변수이다.
모듈 sys을 하기 위해서는

        import sys

라는 수입(import) 구문을 소스 선두 부분에 적어주어야 한다.

C/C++/Java/Ruby 언어들과는 달리 리스트의 0번의 값(즉 sys.argv[0])은 python 명령 바로 다음에 입력된 (실행될) Python 소스파일명을 가리키므로, 1번부터 처리해야 한다. 즉 Python 언어에서 sys.argv[1], sys.argv[2], sys.argv[3], ... 들이 각각 C 언어의 argv[0], argv[1], argv[2], .... 들에 해당하며, Java 언어의 args[0], args[1], args[2], ... 들에 해당한다.

다음 소스의 앞 부분에

    #! /usr/bin/python
    # -*- encoding: euc-kr -*-

를 적어둔 것은 소스 코드에서 (주석문에) ASCII 가 아닌 문자(여기서는 한글 euc-kr)를 소스 코드에서 사용하고 있기 때문이다. 이 두 줄은

    #! /usr/bin/python
    # coding: euc-kr

으로 하여도 된다. 만일 소스 코드 파일을 utf-8 인코딩으로 저장하였다면 euc-kr 대신 utf-8로 하여야 할 것이다. (참고로, Ubuntu 플랫폼에서는 소스파일 저장시 반드시 utf-8 인코딩으로 저장하여야 한다.)


소스파일명: testArguments.py

  1. #!/usr/bin/python
  2. # -*- encoding: euc-kr -*-
  3. import sys
  4. # 명령행 인자(command-line argument) 개수 출력
  5. print "Count of arguments: %d" % (len(sys.argv)-1)
  6. sum = 0.0
  7. for i in range(1, len(sys.argv)):
  8.     # 스트링을 부동소수점수로 변환하여 누적
  9.     sum += float(sys.argv[i])
  10. # 누적된 값을 출력
  11. print "The sum of arguments is %g" % sum


실행> python testArguments.py 1 2 3 4
Count of arguments: 4
The sum of arguments is 10


실행> python testArguments.py 1 2 3 4.1
Count of arguments: 4
The sum of arguments is 10.1


※ 위의 소스 코드는 Jython으로도 수정 없이 그대로 실행된다.

실행> jython testArguments.py 1 2 3 4
Count of arguments: 4
The sum of arguments is 10


실행> jython testArguments.py 1 2 3 4.1
Count of arguments: 4
The sum of arguments is 10.1


※ 위의 소스 코드는 IronPython으로도 수정 없이 그대로 실행된다.

실행> ipy testArguments.py 1 2 3 4
Count of arguments: 4
The sum of arguments is 10


실행> ipy testArguments.py 1 2 3 4.1
Count of arguments: 4
The sum of arguments is 10.1




Posted by Scripter
,