[파이썬, Python] sys.argv 명령행 옵션 구하기 - 파일명 입력 받기 예제


sys.argv[0] 에는 python 스크립트 자기 자신의 파일명 풀패스가 들어감.
sys.argv[1] 에는 첫번째 옵션이 들어가고,
sys.argv[2] 에는 두번째 옵션이 들어감.


예제 1)

[test.py]

#!/usr/bin/python

import sys

optionLen = len(sys.argv)

if optionLen is 1:

print 'There is no option.'

else:

print 'Number of option is %d.' % (optionLen-1)

for i in range(optionLen):

print 'sys.argv[%d] = %s' % (i, sys.argv[i]) 


[결과 1]

C:\>python test.py option1 option2 option3

Number of option is 3.

sys.argv[0] = test.py

sys.argv[1] = option1

sys.argv[2] = option2

sys.argv[3] = option3



예제 2) 파일명 입력 받기

#!/usr/bin/python

import sys

if len(sys.argv) is 1:

filename = raw_input('please type file name: ') # There is no option.

else:

filename = sys.argv[1]

while True:

try:

print 'The File is : %s' % filename

file = open(filename, 'rb')

break

except:

print '[Error] No such file: %s' % filename

filename = raw_input('please try again!!! type file name: ')



아래 결과 2-1는, python test.py와 같이 실행을 할 경우이며,

len(sys.argv)의 값이 1이 되기 때문에, raw_input이 실행되어, 

파일명 입력을 유도하는 "please type file name:"이 화면에 표시되고, 

"test.py"를 입력하면, "The File is : test.py"라 출력됩니다. 



[결과 2-1]

C:\>python test.py

please type file name: test.py

The File is : test.py



아래 결과 2-2에서, python test.py test.py와 같이 실행을 할 경우에는,  

len(sys.argv)의 값이 2가 되고, sys.argv[1]에는 "test.py"가 저장되며, 

"The File is : test.py"가 바로 출력됩니다.



[결과 2-2]

C:\>python test.py test.py

The File is : test.py



결과 2-3에서, python test.py test1.py와 같이 실행을 할 경우에는,

len(sys.argv)의 값이 2가 sys.argv[1]에는 "test1.py"가 저장되며, 

테스트한 폴더에 test1.py라는 파일이 없기 때문에,

"[Error] No such file: test1.py"라고 출력되어 지고, 

파일명을 다시 입력하도록 유도하는 "please try again!!! type file name:"가 출력됩니다.



[결과 2-3]

C:\>python test.py test1.py

The File is : test1.py

[Error] No such file: test1.py

please try again!!! type file name:


반응형

+ Recent posts