[파이썬, 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: |
'파이썬' 카테고리의 다른 글
[파이썬, Python] 파일명 확장자 변경하기 예제 (0) | 2015.07.20 |
---|---|
[파이썬, Python] if x is not None or if not x is None? (1) | 2015.06.12 |
[파이썬, Python] binary file 열어 byte arrary로 읽기 (1) | 2015.04.27 |
[파이썬, Python] 한글 지원 (0) | 2015.04.27 |
[파이썬, Python] if not x (0) | 2015.04.24 |