sys.argv
sys 모듈은 파이썬 인터프리터가 제공하는 변수들과 함수들을 직접 접근하여 제어할 수 있게 해주는 모듈이다.
C:\Python_Study > python test.py python c java
위의 사진에서 보듯이 python testpy 뒤에 또 다른 값들을 넣어주면 sys.argv라는 리스트에 그 값들이 추가된다.
간단한 이해를 돕기 위해 다음과 같인 파일을 만든다.
파일이 저장되는 경로는 필자의 기준으로 " C:\Python_Study " 에 저장된다.
이제 도스창에서 다음과 같이 실행한다.
위처럼 python이란 명령어 뒤의 모든 파라미터 들이 공백을 기준으로 나뉘어 sys.argv 리스트이 요소가 됨을 알 수 잇다.
sys.exit
sys.exit는 스크립트를 강제로 종료하는 방법으로 Ctrl+Z나 Ctrl+D를 눌러서 대화형 인터프리터를 종료하는 것과 같은 기능을 한다.
혹은 프로그램 파일 내에서 사용하게 되면 프로그램을 중단하게 된다.
sys.path
sys.path는 파이썬 모듈을이 저장된 현재 경로를 의미한다. 즉 해당 위치에 잇는 모든 .py 파일들은 경로에 상관없이 어디에서나 불러올 수 있다.
현재 sys.path에 저장된 경로들은 다음과 같다.
위의 경로내에 존재하는 .py 파일들은 어디서나 불러올 수 있지만 개인이 만든 모듈 파일을 위의 path 잡혀있지 않은 경로에 저장할 경웅에는 해당 디렉토리로
직접 이동 후 사용해야 한다.
즉, 개인이 원하는 디렉토리를 sys.path에 추가하면 어디서나 불러올 수 있게 된다. path 디렉토리를 추가하는 법은 다음과 같다.
pickle
pickle 모듈은 객체의 형태를 그래도 유지하게 하여 파일에 저장하시키고 또 불러올 수 있게 하는 모듈이다. 즉 순수하게 저장/불러오기만 수행한다.
위의 코딩은 파일을 쓰기 모드로 열어서 딕셔너리 객체인 data를 그대로 pickle.dump 명령어로 저장하는 방법이다.
pickle.dump에 의해 저장된 파일을 읽기 모드로 열어서 원래 있던 딕셔너리 객체인 data를 그대로 가져오는 방법이다.
딕셔너리 뿐만 아니라 그 어떠한 자료형이든 상관 없다.
string
string 모듈은 문자열 처리에 사용된다. 이전 강의에서 문자열에 관한 내용 중 문자열에 사용되는 함수를 알아보았다. 이 string 모듈의 함수들 도한 문자열 자체의 관련 함수들과
거의 비슷하게 동작한다. 본 글에서는 string 모듈에만 있는 함수를 몇개만 알아본다.
우선 위에서 string 모듈에서 사용하는 함수들을 보자. 이미 몇몇개의 함수들은 예전에 사용했던 것임을 알 수 있다. 즉, 다음의 두 동작들은 서로 같은 결과를 반환한다.
첫번째의 경우에는 string 모듈의 split 함수를 이용한 것이고 두번째의 경우에는 문자열 자체의 split 함수를 것이다.
string 모듈에만 있는 함수에는 다음과 같은 것이 있다.
atof
ascii to float의 약자로 말 그대로 ascii(문자열) to(변환) float(실수로), 즉 문자열 형태의 숫자를 실수로 바꾸어 준다.
atof는 실수로 변환 가능한 문자를 실수 형태로 바꾸어 주는 것이기 때문에 2번째 처럼 캐스팅을 이용하여 변환환것과 동일한 결과를 반환한다.
* 비슷한 함수노느 atoi가 있다. atoi 함수는 문자열 형태의 숫자를 정수로 바꾸어 준다.
zfill(x, y)
zfil zero+fill의 합성어로 0를 채운다는 소리이다. 이 함수는 주로 숫자를 펴시하는데 쓰이는 함수로 앞의 빈 공간을 0으로 채워준다.
string.zfill(x,y)에서 1번째 인수인 x는 표시할 값이고 2번째 인수인 y는 총 길이를 나타낸다.
StringIO (String Input/Output)
StringIO는 파일처럼 취급되는 객체를 만든다. 단 어디까지나 흉내를 낼 뿐이지 진짜 파일이 될수는 없다. 사용법은 아래와 같다.
우선 StringIO 모듈을 사용하기 위해 import 한다.
그리고 StringIO 모듈의 함수인 StringIO 함수를 이용하여 객체를 하나 생성한다. 이 객체는 마치 파일 객채체럼 실행된다. 따라서 정상적인 파일 객체에서 사용되는
함수들을 사용할 수 있다.
위에서 생성한 가짜 파일 객체(f)에 wrtie를 이용하여 문자열을 대입하였다.
f 객체에 쓰여진 문자열을 getvalue를 이용하여 읽어서 변수 value에 대입하였다. 이 getvalue 함수는 StringIO에서만 쓰이는 함수이다.
마지막으로 close를 이용하여 f 객체를 지운다.
진짜 파일 객체를 사용하지 않고 StringIO를 사용하는 이유는???
코딩을 하다 보면 프로그램의 로직에 따라 문자열 데이터를 파일에 저장한 다음에 여러 가지 처리를 해야할 때가 있다. 하지만 그 파일이 다시는 사용되지 않고 굳이
저장될 필요가 없다면 진짜 파일 객체를 이용하여 파일에 저장하는 것은 여러모로 자원의 낭비다. 이럴 때 사용하는 것이 바로 StringIO 모듈이다.
os.environ
운영체제마다, 또 시스템마다 각기 다른 환경 변수 값들을 가지고 있다. 파이썬은 이런 환경 변수값들을 보여주는 함수가 있는데 이 함수가 바로 os 모듈의 environ 함수이다.
자신의 시스템의 환경정보를 보고 싶다면 다음과 같이 하면 된다.
딕셔너리 객체로 나타나기 때문에 사용자가 원하는 특정 환경 변수만 볼수도 있다.
os.chdir, os.getcwd
chdir은 디렉토리를 변경하는 함수이고, getcwd는 현재 디렉토리를 가져오는 함수이다.
os.system
시스템의 유틸리티나 기타 명령어들을 파이썬에서 호출할 수 있다. 사용법은 os.system("명령어") 처럼 사용하면 된다.
파이썬 인터프리터에서 위처럼 원하는 명령어를 실행하면 자동으로 cmd 창이 팝업되면서 명령이 수행된다.
os.popen
os.popen은 시스템 명령어를 실행시킨 결과값을 읽기 모드 형태의 파일 객체로 돌려준다.
shutil
shutil은 파일을 복사해 주는 파이썬 모듈이다.
shutil.copy(src, dst)
src라는 이름의 파일을 dst 이름으로 복사한다. 만약 dst가 디렉토리 이름이라면 src라는 파일이름으로 dst라는 디렉토리에 복사하고 그 이름이 존재하면 덮어쓰게 된다.
우선 dir를 통하여 파일 목록 중 위 파일을 바꿀 예정이다.
위의 명령어를 통하여 파일 이름을 바꾼다.
바뀐 이름을 확인할 수 있다.
glob
가끔 파일을 읽고 쓰는 기능이 있는 프로그램을 코딩하다 보면 해당 디렉토리의 파일들의 이름을 알아야 할 때가 있는데 이럴 때 쓰이는 모듈이 바로 glob이다.
즉, 디렉토리에 있는 파일들을 리스트로 만들어 반환한다.
glob(pathname)
glob모듈은 해당 디렉토리내의 파일들을 읽어서 리스트로 돌려준다. 메타문자(*, ?)를 써서 원하는 파일만을 읽어들일 수도 있다
위 사진은 C:\Python_Study 란 디렉토리에 있는 파일중 확장자가 txt인 파일들을 모두 찾아서 리스트로 돌려준다.
tempfile (임시파일)
임시적으로 파일을 만들어서 쓸 때 유용하게 쓰이는 모듈이 바로 tempfile이다. tempfile.mktemp()는 중복되지 안흔 임시파일의 이름을 만들어서 돌려준다.
time
time 모듈에 관련된 유용한 함수는 굉장히 많다. 그 중에서 가장 유용한 몇 가지만 알아보도록 한다
time.time
time.time()은 UTC(협정 세계 표준시)를 이용하여 현재의 시간을 실수형태로 반환하여 주는 함수이다.
* 1970년 1월 1일 0시 0분 0초를 기준으로 지난 시간을 초단위로 반환한다.
time.localtime
time.localtime은 time.time()에 의해서 반환된 실수값을 이용해서 년도, 월, 일, 시, 분, 초 등의 튜플 형태로 바꾸어 주는 함수이다.
time.asctime
위의 time.localtime에 의해서 반환된 튜틀 형태의 값을 인수로 받아서 알아보기 쉬운 날짜와 시간형태의 값을 반환하여 주는 함수이다.
* 가장 자주 사용되는 시간 관련 함수이다.
time.strftime
time.strftime("출력할 형식포맷코드", time.localtime(time.time())) strftime 함수는 시간에 관계된 것을 세밀하게 표현할 수 있는 여러 가지 포맷 코드를 제공해 준다.
포맷코드 |
설명 |
예 |
%a |
요일 줄임말 |
Mon |
%A |
요일 |
Monday |
%b |
달 줌일말 |
Jan |
%B |
달 |
January |
%c |
날짜와 시간을 출력 |
14/02/18 21:10:05 |
%d |
날(day) |
31 |
%H |
시간(hour)-24시간 출력 형태 |
21 |
%I |
시간(hour)-12시간 출력 형태 |
09 |
%j |
1년 중 누적 날짜 |
049 |
%m |
달 |
02 |
%M |
분 |
12 |
%p |
AM or PM |
PM |
%S |
초 |
55 |
%U |
1년 중 누적 주, 일요일을 시작으로 함 |
07 |
%w |
숫자로 된 요일 |
2 (일요일=0, 토요일=7) |
%W |
1년 중 누적 주, 월요일을 시작으로 함 |
07 |
%x |
현재 설정된 로케일에 기반한 날짜 출력 |
02/18/14 |
%X |
현재 설정된 로케일에 기반한 시간 출력 |
21:13:11 |
%Y |
년도 출력 |
2014 |
%Z |
시간대 출력 |
대한민국 표준시 |
%y |
세기 부분을 제외한 년도 출력 |
14 |
time.sleep
time.sleep 함수는 보통 루프 안에서 많이 쓰이는데 일정한 시간 간격을 주기 위해서 주로 쓰이게 된다.
위의 코딩은 2초 간격으로 0부터 9까지의 숫자를 출력하게 된다. time.sleep 함수의 인수로는 실수 형태가 가능하다. 즉 1이면 1초이고, 0.5면 0.5초이다.
calnedar
파이썬에서 달력을 볼 수 있게 해주는 모듈이다.
calendar.clendar(x)
이 함수는 특정 년도의 전체 달력을 보고 싶을 때 사용한다.
calendar.prmonth(년, 월)
특정 년도의 특정 월 달력을 보고 싶을 때 사용하는 함수이다.
calendar.weekday
특정 년도의 월의 일이 어떤 요일인지 알고 싶을 때 사용하는 함수이다.
0 = 월요일, 1 = 화요일, 2 = 수요일, 3 = 목요일
4 = 금요일, 5 = 토요일, 6 = 일요일
calendar.monthrange(년도, 월)
monthrange 함수는 입력받은 달의 1일이 무슨요일인지와 그 달이 몇일까지 있는지에 대한 정보를 튜플 형태로 반환한다.
2014년 11월 1일은 토요일(숫자 5)이고 11월은 30일까지 있다는 것을 보여준다.
random
random은 난수발생 모듈이다. random과 randint에 대해서 알아보자.
random.random
0.0 에서 1.0 사이의 실수값 중에서 난수값을 발생시켜 반환하는 함수이다.
random.randint(x, y)
x에서 y사이의 정수사이에서 난수값을 발생시켜 반환한다.
Thread(쓰레드)
동작하고 있는 프로그램을 우리는 Process(프로세스)라고 한다. 보통 한 개의 프로세스는 한 가지 일만 하는것이 일반적이다. 그러나, 쓰레드란 것을 이용하면 한 개의 프로세스가
n 개 이상의 일을 동시에 할 수 있게 된다. 우리는 이런 환경을 멀티 프로세스라고 한다.
위의 코딩에서는 새로운 쓰레드를 3개 만들었다. 1초마다 'Python', 'is', 'powerful' 을 추루력하는 프로그램이다. 그리고 매 0.1초마다 0~99까지 숫자를 출력한다.
메인 쓰레드는 마지막에 For 부분이다.
webbrowser
webbrowser는 자신의 OS에서 사용하는 기본 웹 브라우저를 자동으로 실행하게 하는 모듈이다.
webbrowser의 open 함수는 웹브라우저가 실행된 상태이면 해당 주소로 이동하고 웹브라우저가 실행되지 않은 상태이면 새로운 웹브라우저가 실행되어 해당 주소로 이동한다.
*open_new 함수는 이미 웹 브라우저가 실행된 상태에서 새로운 창으로 해당 주소가 열린다.
'Developing > Python_배우기' 카테고리의 다른 글
Python 12 - 라이브러리 (내장 함수) (0) | 2014.02.15 |
---|---|
Python 11 - 예외처리 (0) | 2014.02.15 |
Python 10 - 모듈 (1) | 2014.02.03 |
Python 09 - 클래스 (0) | 2014.01.26 |
Python 08 - 입/출력 (I/O) (0) | 2014.01.25 |