05-6 ~ 05장 연습문제 (p.247 ~ p.265)
슬슬 기본 문법은 마무리되고 응용 부분 공부를 시작하니 머리를 더 쓰면서 공부를 해야 하지만 전보다 더 재미있어지는 것 같다. 본격적으로 프로그램을 작성해 보기 전 단계를 밟고 있는 느낌이다.
이대로 쭉 흥미를 잃지 말고 전진하자아~~
05-6 라이브러리
라이브러리는 말 그대로 원하는 정보를 찾아보는 곳이다. 전 세계의 파이썬 사용자들이 만든 유용한 프로그램을 모아 놓은 것이다. (파이썬 라이브러리는 파이썬을 설치할 때 자동으로 컴퓨터에 설치한다.)
밑에 적는 것은 자주 사용되고 꼭 알아 두면 좋은 라이브러리들이다.
sys
sys 모듈은 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈이다.
# 명령 행에서 인수 전달하기 - sys.argv
# 명령 프롬프트 창에서 모듈명 뒤에 또 다른 값을 함께 넣어 주면 sys.argv 리스트에 그 값 추가
#argv_test.py
import sys
print(sys.argv)
# cmd
C:/doit/Mymod>python argv_test.py you need python
['argv_test.py', 'you', 'need', 'python']
# 강제로 스크립트 종료하기 - sys.exit
# Ctrl + z처럼 대화형 인터프리터를 종료하는 것과 같은 기능
>>> sys.exit()
# 자신이 만든 모듈 불러와 사용하기 - sys.path
# 파이썬 모듈들이 저장되어 있는 위치 나타냄
# 이 위치에 있는 파이썬 모듈은 경로에 상관없이 어디에서나 불러올 수 있음
import sys
sys.path
>>> ['', 'C:\\Windows\\SYSTEM32\\python37.zip...'] # ''는 현재 디렉터리
# path_append.py # sys.path.append를 사용해 경로 이름 추가
import sys
sys.path.append("C:/doit/Mymod")
pickle
pickle은 객체의 형태를 그대로 유지하면서 파일에 저장하고 불러올 수 있게 하는 모듈이다.
import pickle
f = open("test.txt", 'wb')
data = {1: 'python', 2: 'you need'}
pickle.dump(data, f)
f.close()
# dump 함수 사용해서 딕셔너리 객체인 data를 그대로 파일에 저장
import pickle
f = open("test.txt", 'rb')
data = pickle.load(f)
print(data)
>>> {1:'python', 2:'you need'}
# pickle.dump로 저장한 파일을 pickle.load를 사용해 원래 있던 딕셔너리 객체(data) 상태 그대로 불러옴
OS
OS 모듈은 환경 변수나 디렉터리, 파일 등의 OS 자원을 제어할 수 있게 해주는 모듈이다.
# 내 시스템의 환경 변수 값을 알고 싶을 때 - os.environ
import os
os.environ
>>> environ({'PROGRAMFILES': 'C:\\Program Files', 'APPDATA': ... 생략 ...})
# 환경 변수 값은 컴퓨터 마다 다름
os.environ['PATH'] # PATH 환경 변수 내용
>>> 'C:\\ProgramData\\Oracle\\Java\\javascript; ... 생략 ...'
# 디렉터리 위히 변경하기 - os.chdir
os.chdir("C:\WINDOWS")
# 디렉터리 위치 돌려받기 - os.getcwd
os.getcwd()
>>> 'C:\\WINDOWS' # 현재 디렉터리 위치에 따라 결과가 다를 수 있음
# 시스템 명령어 호출하기 - os.system
os.system("dir")
# 실행한 시스템 명령어 결괏값 돌려받기 - os.popen
# 실행한 결괏값을 읽기 모드 형태의 파일 객체로 돌려줌
f = os.popen("dir")
print(f.read()) # 읽어 들인 파일 객체의 내용 보기
# 기타 유용한 os 관련 함수
os.mkdir(디렉터리) # 디렉터리를 생성
os.rmdir(디렉터리) # 디렉터리 삭제(단 디렉터리가 비어 있어야 함)
os.unlink(파일 이름) # 파일을 지움
os.rename(src, dst) # src라는 이름의 파일을 dst라는 이름으로 변경
shutil
shutil은 파일을 복사해 주는 파이썬 모듈이다.
import shutil
shutil.copy("src.txt", "dst.txt") # src라는 이름의 파일을 dst로 복사
# dst가 디렉터리 이름이면 src라는 파일 이름으로 복사
# dst 디렉터리에 복사하고 동일한 파일 이름이 있으면 덮어씀
glob
특정 디렉터리에 있는 파일 이름 모두를 알려준다.
*, ? 등 메타 문자를 써서 원하는 파일만 읽어 들일 수도 있다.
# 디렉터리에 있는 파일들을 리스트로 만들기 - glob(pathname)
import glob
glob.glob("C:/doit/mark*") # mark로 시작하는 파일을 모두 찾음(* 사용)
>>> ['C:/doit\\marks1.py', 'C:/doit\\marks2.py', 'C:/doit\\marks3.py']
tempfile
파일을 임시로 만들어서 사용할 때 유용한 모듈이다.
import tempfile
filename = tempfile.mkstemp() # 중복되지 않는 임시 파일의 이름을 무작위로 생성
filename
>>> 'C:\WINDOWS\TEMP\~-275151-0'
import tempfile
f = tempfile.TemporaryFile() # 임시 저장 공간으로 사용할 파일 객체를 돌려줌
# 기본적으로 바이너리 쓰기 모드(wb)를 가짐
f.close() # 생성한 임시 파일이 자동으로 삭제됨
time
시간과 관련된 모듈이다.
# time.time - 현재 시간을 수 형태로 돌려주는 함수
import time
time.time()
>>> 988348015.73417199
# time.localtime - time.time()이 돌려준 실수 값을 사용해서 연도, 월, 일, 시, 분, 초, ... 형태로 변환
# import time
time.localtime(time.time())
>>> time.stuct_time(tm_year=2013, tm_mon=5, tm_mday21, ...)
# time.asctime - time.localtime에 의해서 반환된 튜플 형태의 값을 인수로 받아서 날짜와 시간을 알아보기 쉬운 형태로 돌려줌
time.asctime(time.localtime(time.time()))
>>> 'Sat Apr 28 20:50:20 2001'
# time.ctime - 위 함수를 간편하게 표시, 항상 형재 시간만을 돌려줌
time.ctime()
'Sat Apr 28 20:56:31 2001'
# time.strftime
time.strftime(' 출력할 형식 포맷 코드', time.localtime(time.time()))
# strftime 함수는 시간에 관계된 것을 세밀하게 표현하는 여러 가지 포맷 코드 제공
import time
time.strftime('%x', time.localtime(time.time()))
>>> '05/01/01'
# time.sleep - 일정한 시간 간격을 두고 루프 실행 가능(주로 루프 안에서 사용)
import time
for i in range(10):
print(i)
time.sleep(1) # 1초 간격으로 0부터 9까지의 숫자 출력
calendar
파이썬에서 달력을 볼 수 있게 해주는 모듈이다.
# calendar.calendar(연도, 월) - 해당 월 달력을 보여줌, 월 생략하면 연도 전체를 보여줌
import calendar
print(calendar.calendar(2022))
# calendar.prcal(연도) - 위와 똑같은 결괏값
calendar.prcal(2022)
# calendar.weekday(연도, 월, 일) - 그 날짜에 해당하는 요일 정보를 보여줌
calendar.weekday(2022, 2, 15)
>>> 1 # 월요일부터 0, 화요일 1, 수요일 2... 순서
# calendar.monthrange(연도, 월) - 입력받은 달의 1일이 무슨 요일인지, 그 달이 며칠까지 있는지 튜플 형태로 보여줌
calendar.monthrange(2022, 2)
>>> (1, 28)
random
난수(규칙이 없는 임의의 수)를 발생시키는 모듈이다.
import random
random.random() # 0.0 ~ 1.0 사이의 실수 중에서 난수 값을 돌려줌
>>> 0.5345324654543467
random.randint(1, 10) # 1 ~ 10 사이의 정수 중에서 난수 값을 돌려줌
>>> 7
# random.shuffle - 리스트의 항목을 무작위로 섞음
import random
data = [1, 2, 3, 4, 5]
random.shuffle(data)
data
>>> [5, 1, 3, 4, 2]
webbrowser
자신의 시스템에서 사용하는 기본 웹 브라우저를 자동으로 실행하는 모듈이다.
import webbrowser
webbrowser.open("http://google.com")
webbrowser_new.open("http://google.com") # 웹브라우저가 이미 실행된 상태라도 새로운 창으로 열림
threading
한 프로세스 안에서 2가지 또는 그 이상의 일을 동시에 수행할 수 있게 해주는 모듈이다.
# thread_test.py
import time
import threading # threading 모듈 import
def long_task(): # 5초의 시간이 걸리는 함수
for i in range(5):
time.sleep(1) # 1초 간격으로 실행
print("working:%s\n" % i)
print("Start")
threads = []
for i in range(5): # long_task를 5회 수행
t = threading.Thread(target=long_task) # 스레드 생성
threads.append(t)
for t in threads:
t.start() # 스레드 실행
for t in threads:
t.join() # join으로 스레드가 종료될 때까지 기다림
print("End")
>>> Start
working:0 # long_task가 동시에 5번씩 실행
working:0
working:0
working:0
working:0
working:1
working:1
working:1
working:1
working:1
.
.
.
working:4
working:4
working:4
working:4
working:4
End
'Python (파이썬)' 카테고리의 다른 글
13 [Do it! 점프 투 파이썬] - 작심 13일 (0) | 2022.02.17 |
---|---|
12 [Do it! 점프 투 파이썬] - 작심 12일 (0) | 2022.02.16 |
10 [Do it! 점프 투 파이썬] - 작심 10일 (0) | 2022.02.11 |
09 [Do it! 점프 투 파이썬] - 작심 9일 (0) | 2022.02.10 |
08 [Do it! 점프 투 파이썬] - 작심 8일 (0) | 2022.02.09 |