sys
sys 모듈은 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈이다.
파이썬 인터프리터에 들어가면 >>> 뒤에 명령어를 타이핑하는 걸 확인할 수 있다.
sys 모듈을 변경하면 >>> 프롬프트를 변경할 수 있다.
>>> import sys
>>> sys.ps1 # 현재의 프롬프트는?
'>>> '
>>> sys.ps1 = '^^; ' # 요걸로 바꿔!
^^; print 'hello'
hello
^^; 5 * 3
15
^^;
sys.exit() # 종료
# argv_test.py
import sys
print(sys.argv)
C:/doit/Mymod>python argv_test.py you need python # python 뒤의 모든 것들이 공백을 기준으로 나뉘어서
['argv_test.py', 'you', 'need', 'python'] # sys.argv 리스트의 요소가 된다.
자신이 만든 모듈 불러와 사용하기 - sys.path
sys.path는 파이썬 모듈들이 저장되어 있는 위치를 나타낸다. 즉 이 위치에 있는 파이썬 모듈은 경로에 상관없이 어디에서나 불러올 수 있다.
>>> sys.path
['', 'C:\\Users\\Family\\AppData\\Local\\Programs\\Python\\Python37-32\\python37.zip', 'C:\\Users\\Fam
ily\\AppData\\Local\\Programs\\Python\\Python37-32\\DLLs', 'C:\\Users\\Family\\AppData\\Local\\Program
s\\Python\\Python37-32\\lib', 'C:\\Users\\Family\\AppData\\Local\\Programs\\Python\\Python37-32', 'C:\
\Users\\Family\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages']
# ''은 현재 디렉터리르 말한다.
# path_append.py
import sys
sys.path.append("C:/doit/mymod")
sys.path # 를 타이핑하면 append로 추가한 내용이 sys.path 에 추가된 걸 확인할 수 있다.
pickle
pickle은 객체의 형태를 그대로 유지하면서 파일에 저장하고 불러올 수 있게 하는 모듈이다.
다음 예는 pickle 모듈의 dump 함수를 사용하여 딕셔너리 객체인 data를 그대로 파일에 저장하는 방법을 보여준다.
>>> import pickle
>>> f = open("test.txt", 'wb')
>>> data = {1: 'python', 2: 'you need'}
>>> pickle.dump(data, f)
>>> f.close()
os
OS 모듈은 환경 변수나 디렉터리, 파일 등의 OS 자원을 제어할 수 있게 해주는 모듈이다.
내 시스템의 환경 변수값을 알고 싶을 때 - os.environ
시스템은 제각기 다른 환경 변수 값을 가지고 있는데, os.environ은 현재 시스템의 환경 변수 값을 보여준다.
>>> import os
>>> os.environ
environ({'PROGRAMFILES': 'C:\\Program Files', 'APPDATA': … 생략 …})
# 시스템의 PATH 환경변수 내용이다.
디렉터리 위치 변경하기 - os.chdir (작업 디렉토리 변경)
os.chdir를 사용하면 다음과 같이 현재 디렉터리 위치를 변경할 수 있다.
>>> os.chdir("C:\doit\Mymod")
디렉터리 위치 돌려받기 - os.getcwd (현재 작업 디렉토리 반환)
os.getcwd는 현재 자신의 디렉터리 위치를 돌려준다.
>>> os.getcwd()
>>> os.getcwd()
'C:\\doit\\Mymod'
시스템 명령어 호출하기 - os.system
시스템 자체의 프로그램이나 기타 명령어를 파이썬에서 호출할 수도 있다.
os.system("명령어") 처럼 사용한다. 다음은 현재 디렉터리에서 시스템 명령어 dir을 실행하는 예이다.
>>> os.system("dir") # 디렉터리 내용이 출력된다.
>>> os.system("notepad") # 메모장 실행
실행한 시스템 명령어의 결괏값 돌려받기 - os.popen
os.popen은 시스템 명령어를 실행한 결괏값을 읽기 모드 형태의 파일 객체로 돌려준다.
>>> f = os.popen("dir")
>>> print(f.read())
C 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: E056-FC83
C:\doit\Mymod 디렉터리
2019-07-16 오후 01:03 <DIR> .
2019-07-16 오후 01:03 <DIR> ..
2019-07-16 오후 12:47 27 argv_test.py
2019-07-16 오후 01:12 40 test.txt
2개 파일 67 바이트
2개 디렉터리 44,148,793,344 바이트 남음
기타 유용한 os 관련 함수

shutil
shutil은 파일을 복사해주는 파이썬 모듈이다.
>>> import shutil
>>> shutil.copy("test.txt", "tttt.txt") # test.txt 라는 파일을 tttt.txt 라는 파일로 복사
'tttt.txt'
>>> os.system("dir")
C 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: E056-FC83
C:\doit\Mymod 디렉터리
2019-07-16 오후 01:30 <DIR> .
2019-07-16 오후 01:30 <DIR> ..
2019-07-16 오후 12:47 27 argv_test.py
2019-07-16 오후 01:12 40 test.txt
2019-07-16 오후 01:30 40 tttt.txt # 추가완료
3개 파일 107 바이트
2개 디렉터리 44,154,458,112 바이트 남음
0
glob
가끔 파일을 읽고 쓰는 기능이 있는 프로그램을 만들다 보면 특정 디렉터리에 있는 파일 이름 모두를 알아야 할 때가 있다. 이럴 때 사용하는 모듈이 바로 glob 이다.
디렉터리에 있는 파일들을 리스트로 만들기 - glob(pathname)
glob 모듈은 디렉터리 안의 파일들을 읽어서 돌려준다. *, ? 등 메타 문자를 써서 원하는 파일만 읽어 들일 수도 있다.
>>> import glob
>>> glob.glob("c:/doit/mark*")
['c:/doit\\marks1.py', 'c:/doit\\marks2.py', 'c:/doit\\marks3.py']
# doit/ 안에 있는 파일 중 이름이 mark로 시작하는 파일을 찾아서 읽어들여라
tempfile
파일을 임시로 만들어서 사용할 때 유용한 모듈이 바로 tempfile이다.
tempfile.mktemp()는 중복되지 않는 임시 파일의 이름을 무작위로 만들어서 돌려준다.
>>> import tempfile
>>> filename = tempfile.mktemp()
>>> filename
'C:\\Users\\Family\\AppData\\Local\\Temp\\tmpoemldnec'
tempfile.TemporaryFile() 은 임시 저장 공간으로 사용할 파일 객체를 돌려준다.
이 파일은 기본적으로 바이너리 쓰기 모드(wb)를 갖는다.
f.close()가 호출되면 이 파일 객체는 자동으로 사라진다.
>>> import tempfile
>>> f = tempfile.TemporaryFile()
>>> f.close()
time
time.time()은 UTC를 사용하여 현재 시간을 실수 형태로 돌려주는 함수이다.
>>> import time
>>> time.time()
1563253045.6358325
time.localtime 은 time.time()이 돌려준 실수 값을 사용해서 연도, 월, 일, 시, 분 초, ... 의 형태로 바꿔준다.
>>> time.localtime()
time.struct_time(tm_year=2019, tm_mon=7, tm_mday=16, tm_hour=14, tm_min=0, tm_sec=40,
tm_wday=1, tm_yday=197, tm_isdst=0)
time.asctime 위 time.localtime 에 의해서 반환된 튜플 형태의 값을 인수로 받아서 날짜와 시간을 알아보기 쉬운 형태로
돌려주는 함수이다.
>>> time.asctime() # 이렇게 사용하는게 더 간편하다.
'Tue Jul 16 14:02:00 2019'
>>> time.asctime(time.localtime(time.time()))
'Sat Apr 28 20:50:20 2001'
time.ctime time.asctime(time.localtime(time.time())) 은 time.ctime()을 사용해 간편하게 표시할 수 있다.
asctime과 다른 점은 ctime은 항상 현재 시간만을 돌려준다는 점이다.
>>> time.asctime() # asctime()
'Tue Jul 16 14:02:00 2019'
>>> time.ctime() # ctime()
'Tue Jul 16 14:03:33 2019'
time.strftime
time.strftime('출력할 형식 포맷 코드', time.localtime(time.time()))
시간에 관계된 것을 표현하는 포맷 코드

>>> import time
>>> time.strftime('%x', time.localtime(time.time()))
'05/01/01'
>>> time.localtime() # localtime
time.struct_time(tm_year=2019, tm_mon=7, tm_mday=16, tm_hour=14, tm_min=6, tm_sec=26,
tm_wday=1, tm_yday=197, tm_isdst=0)
>>> time.strftime('%c', time.localtime(time.time())) # strftime
'Tue Jul 16 14:06:28 2019'
>>> time.strftime("%Y/%m/%d %H:%M:%S")
'2019/07/16 20:54:02'
time.sleep 함수는 주로 루프 안에서 많이 사용한다. 이 함수를 사용하면 일정한 시간 간격을 두고 루프를 실행할 수 있다.
#sleep1.py
import time
for i in range(10):
print(i)
time.sleep(1) # 1초 간격으로 실행
calendar
calendar는 파이썬에서 달력을 볼 수 있게 해주는 모듈이다.
calendar.calendar(연도)로 사용하면 그해의 전체 달력을 볼 수 있다. 결괏값은 달력이 너무 길어 생략하겠다.

>>> import calendar
>>> print(calendar.calendar(2019)) # 2019년도 전체 달력 출력
calendar.calendar(2019) == calendar.prcal(2015)
>>> print(calendar.prmonth(2019, 12)) # 2019년도 12월 달력 출력
>>> print(calendar.weekday(2019, 12, 31)) # 월요일은 0, 화요일은 1, 수요일은 2, 목요일은 3~
calendar.monthrange monthrange(연도, 월) 함수는 입력받은 달의 1일이 무슨 요일인지와 그 달이 며칠까지 있는지를
튜플 형태로 돌려준다.
>>> calendar.monthrange(2015,12)
(1, 31) # 12월 1일은 화요일이고 월(0) 화(1) 수(2) ~ 이 달은 31일 까지 있다는 것을 보여준다
random
random은 난수(규칙이 없는 임의의 수)를 발생시키는 모듈이다.
>>> import random
>>> random.random()
0.53840103305098674
[!] 1~10 사이의 난수 값을 돌려준다.
>>> random.randint(1, 10)
6
>>> random.randint(1, 55)
43
>>> import random
>>> def random_pop(data):
... number = random.randint(0, len(data)-1)
... return data.pop(number)
...
>>> if __name__ == "__main__":
... data = [1,2,3,4,5]
... while data:
... print(random_pop(data))
...
2
5
4
1
위 random_pop 함수는 리스트의 요소 중에서 무작위로 하나를 선택하여 꺼낸 다음 그 값을 돌려준다.
물론 꺼낸 요소는 pop 메서드에 의해 사라진다.

리스트의 항목을 무작위로 섞고 싶을 때는 random.shuffle 함수를 사용하면 된다.
>>> import random
>>> data = [1, 2, 3, 4, 5]
>>> random.shuffle(data)
>>> data
[5, 1, 3, 4, 2]
>>>'Language > Python' 카테고리의 다른 글
| 피보나치 수열 (0) | 2019.07.17 |
|---|---|
| 점프 투 파이썬 - 프로그래밍 (0) | 2019.07.17 |
| 점프 투 파이썬 - 내장 함수 (0) | 2019.07.15 |
| 점프 투 파이썬 - 예외처리 (0) | 2019.07.15 |
| 점프 투 파이썬 - 패키지 (0) | 2019.07.15 |
댓글