본문 바로가기

Programming languages/Python

13. Library

728x90
반응형

라이브러리는 도서관을 의미한다.

전 세계 파이썬 유저들이 만들어놓은 유용한 프로그램들을 모아놓은 것이 파이썬 라이브러리이다.

우리가 프로그램을 만들 때 필요한 기능들을 라이브러리에서 빌려와서 사용한다고 생각하면 이해하기 쉽다.

아래는 자주 사용되고 알아두면 좋은 라이브러리들을 정리해 보았다.

 

<Pickle>

1. pickle은 데이터를 txt 파일 형태로 저장 후 객체로 불러올 수 있게 한다.

속도가 빠르다는 장점이 있지만 REC공격을 받을 수 있는 취약점이 있으므로 조심한다.

 

import pickle
f = open("test.txt", 'wb') #test.txt 쓰기 모드로 생성
data = {1:"a", 2:'b'}
pickle.dump(data, f) #pickle로 test.txt에 딕셔너리 입력
f.close()

f = open("test.txt", 'rb') #test.txt 읽기 모드로 호출
x = pickle.load(f) #pickle로 쓰여진 파일을 호출
print(x)

 

<OS>

2. os모듈은 환경변수, 디렉토리, 파일 등의 os 자원을 제어할 수 있게 한다.

 

import os

print(os.environ)
os.kmdir #디렉토리 생성
os.rmdir #디렉토리 비어있을 경우에는 삭제가능
os.unlink #파일 삭제
os.rename(a,b) #a라는 파일의 이름을 b로 변경

 

<Shutil>

3. 파일을 복사 붙여넣기 해준다.

 

import shutil

shutil.copy("src.txt","des.txt")
#src라는 이름의 파일을 dst라는 파일로 복사한다. 만약 dst가 경로일 경우 해당 경로로 src.txt를 복사한다.

 

<Glob>

4. 디렉토리에 있는 파일들의 이름을 전부 리스트로 만들어준다.

import glob
glob.glob("경로/파일이름이시작하는것*")

 

<Time>

5. 시간과 관련된 time 모듈이다.

 

import time

print(time.time()) #UTC를 사용하여 1970년 1/1 00:00 기준으로 지난시간을 초 단위로 돌려준다.
print(time.localtime(time.time())) #위 함수를 실수값으로 연,월,일,시,분,초 로 돌려준다.
print(time.asctime(time.localtime(time.time()))) #연,월,일.. 을 보기 편하게 보여준다.
print(time.ctime()) #현재 시간을 보기 편하게 보여준다.
print(time.strftime('%b', time.localtime(time.time()))) #다양한 포맷으로 표현해준다.

for i in range(10):
    print(i)
    time.sleep(1) #실수단위로 시간간격을 정할 수 있다.

 

아래는 strftime()에 사용하는 포맷들을 정리해 놓은 것이다.

%a 요일 줄임말 Mon
%A 요일 Monday
%b 달 줄임말 Jan
%B January
%c 날짜와 시간을 출력함 06/01/01 17:22:21
%d 날(day) [01,31]
%H 시간(hour)-24시간 출력 형태 [00,23]
%I 시간(hour)-12시간 출력 형태 [01,12]
%j 1년 중 누적 날짜 [001,366]
%m [01,12]
%M [01,59]
%p AM or PM AM
%S [00,59]
%U 1년 중 누적 주-일요일을 시작으로 [00,53]
%w 숫자로 된 요일 [0(일요일),6]
%W 1년 중 누적 주-월요일을 시작으로 [00,53]
%x 현재 설정된 로케일에 기반한 날짜 출력 06/01/01
%X 현재 설정된 로케일에 기반한 시간 출력 17:22:21
%Y 년도 출력 2001
%Z 시간대 출력 대한민국 표준시
%% 문자 %
%y 세기부분을 제외한 년도 출력 01

 

<Calendar>

6. 달력을 보여주는 모듈이다.

import calendar

print(calendar.calendar(2030,12)) #년도, 월을 입력하면 우리가 아는 달력모양으로 달력을 보여준다.
print(calendar.prcal(2021,12)) #위와 동일한 기능을 한. 그러나 이는 반환값이 없다. 위는 달력객체를 반환해준다.
print(calendar.weekday(2021,12,23)) #연,월,일 을 입력하면 무슨 요일인지 정수로 반환해준다.
print(calendar.monthrange(2021,12)) #연,월 을 입력하면 해당 달의 1일의 요일과 며칠까지 있는지 반환해준다.

weekday와 monthrange 함수는 유용하게 사용될 때가 많으니 기억해 두는 것이 좋다.

 

<Random>

7. 난수를 발생 시키는 모듈이다.

 

import random #random 모듈 불러옴

print(random.random()) #0 과 1 사이의 실수를 난수값으로 반환해준다.
print(random.randint(-100,100)) # 특정 정수 범위의 숫자를 지정해서 난수값으로 반환해준다.

data = [1,2,3,4,5]
random.shuffle(data) #리스트를 무작위로 섞어줌
print(data)

 

<Webbrowser>

8. 해당 시스템의 기본 웹브라우저를 실행시키는 모듈이다.

import webbrowser

webbrowser.open("http://www.google.com") #프로그램이 실행되면 구글이 실행 됨

 

<Threading>

9. 쓰레딩이란 쉽게 생각하면 멀티태스킹을 하는 것이다. 대부분의 독자들은 노래를 들으면서 친구에게 카톡을 보내본 경험이 있을 것이다.

만약에 멀티태스킹이 지원이 안된다면 카톡을 켜는 순간 노래가 꺼질 것이다. 파이썬에서도 동시에 여러 코드가 실행되도록 스레딩 기능을 사용해서 멀티태스킹을 할 수 있다.

 

import time

def long_task():  # 5초의 시간이 걸리는 함수
    for i in range(5):
        time.sleep(1)  # 1초간 대기한다.
        print("working:%s\n" % i)

print("Start")

for i in range(5):  # long_task를 5회 수행한다.
    long_task()

print("End")

위 코드를 한번 살펴보자.

long_task() 함수는 i를 1부터 5까지 1초 간격을 두고 출력하는 함수다.

하단의 for문을 통해 long_task()를 5회 수행하도록 했다.

처음에 Start를 출력하고 출력이 전부 끝나면 End를 출력한다. 따라서 총 25초의 시간이 걸린다.

 

import time
import threading

def long_task():
    for i in range(5):
        time.sleep(1)
        print("working:%s\n" % i)

print("Start")

threads = []
for i in range(5):
    t = threading.Thread(target=long_task) #쓰레드 생성
    threads.append(t) #한번 실행할때 마다 threads 리스트에 추가

for t in threads:
    t.start() #쓰레드 시작

for t in threads:
    t.join()  # join으로 스레드가 종료될때까지 기다린다.

print("End")

이렇게 하면 스레딩을 구성할 수 있다.

쓰레딩은 좀 더 공부가 필요해 보인다.

https://wikidocs.net/book/5445 참고 자료

728x90
반응형

'Programming languages > Python' 카테고리의 다른 글

12. Built-in-function  (0) 2021.12.19
11.Exception  (0) 2021.12.19
10. Module & Package  (0) 2021.12.19
9. Class  (0) 2021.12.14
Examples) Chapter4  (0) 2021.12.12