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

 

+ Recent posts