
파이썬 라이브러리
라이브러리란?
파이썬 프로그래밍 능력을 높여 줄 도구를 알아보자.
전 세계의 파이썬 고수들이 만든 유용한 프로그램을 모아 놓은 것이 바로 파이썬 표준 라이브러리이다.
‘라이브러리’는 ‘도서관’이라는 뜻 그대로 원하는 정보를 찾아보는 곳이다.
모든 라이브러리를 다 알 필요는 없고 어떤 일을 할 때 어떤 라이브러리를 사용해야 한다는 정도만 알면 된다.
이를 위해 어떤 라이브러리가 존재하고 어떻게 사용하는지 알아야 한다.
자주 사용되고 꼭 알아 두면 좋은 라이브러리를 중심으로 하나씩 살펴보자.
sys
sys란?
sys 모듈은 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈이다.
○ 명령 행에서 인수 전달하기 - sys.argv
sys.argv는 파이썬 프로그램을 실행할 때 명령 행에서 전달된 인수들을 담는 리스트이다.
명령 프롬프트 창에서 아래 예제처럼 argv_test.py 뒤에 또 다른 값을 함께 넣어 주면
argv_test.py에 인수(매개변수)로서 전달이 된다.
## 명령 프롬프트에서 test.py 인수(매개변수)로서 전달
C:\ipmes1\Mymod>python argv_test.py abc hello
이를 사용하기 위해서는 먼저 sys 모듈을 import해야 한다.
아래와 같이 코드를 작성하고 argv_test.py로 파일을 C:\ipmes1\Mymod 디렉터리에 저장한다.
## sys 모듈 import - argv_test.py 파일 코드
import sys
print(sys.argv)
다음과 같이 명령 프롬프트에서 실행하면 출력값을 확인할 수 있다.
명령 행에서 python argv_test.py abc hello를 실행하면, 'abc'와 'hello'가 argv_test.py 프로그램에 인수로 전달된다.
이때 sys.argv 리스트의 내용은 sys.argv[0] = 실행한 프로그램의 이름('argv_test.py'), sys.argv[1] = 첫 번째 인수('abc')
sys.argv[2] = 두 번째 인수('hello')를 의미한다.
python 명령어 뒤에 모든 것들이 공백을 기준으로 나뉘어서 sys.argv 리스트의 요소가 된다.
## 명령 프롬프트에서 sys.argv 실행하기
C:\Users\ipmes>python argv_test.py abc hello # 명령 행
→ ['argv_test.py', 'abc', 'hello']
○ 강제로 스크립트 종료하기 - sys.exit
## sys.exit 사용
sys.exit()
sys.exit는 [Ctrl + z]나 [Ctrl + D]를 눌러서 대화형 인터프리터를 종료하는 것과 같은 기능을 한다.
프로그램 파일 안에서 사용하면 프로그램을 중단시킨다.
○ 자신이 만든 모듈 불러와 사용하기 - sys.path
sys.path는 파이썬 모듈들이 저장되어 있는 위치를 나타낸다.
이 위치에 있는 파이썬 모듈은 경로에 상관없이 어디에서나 불러올 수 있다.
아래 예제에서 ' '는 현재 디렉터리를 말한다.
## sys.path 사용
import sys
sys.path
→ ['', 'C:\\Users\\ipmes\\AppData\\Local\\Programs\\Python\\Python313\\python313.zip'
'C:\\Users\\ipmes\\AppData\\Local\\Programs\\Python\\Python313\\DLLs' ...
'C:\\Users\\ipmes\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages']
아래와 같이 파이썬 프로그램 파일에서 sys.path.append를 사용해 경로 이름을 추가할 수 있다.
이렇게 하고 난 후에는 C:/ipmes1/Mymod 디렉터리에 있는 파이썬 모듈을 불러와서 사용할 수 있다.
## 경로 이름 추가
import sys
sys.path.append("C:/ipmes1/Mymod")
pickle
pickle은 객체의 형태를 그대로 유지하면서 파일에 저장하고 불러올 수 있게 하는 모듈이다.
다음 예는 pickle 모듈의 dump 함수를 사용하여 딕셔너리 객체인 data를 그대로 파일에 저장하는 방법을 보여 준다.
## pickle 사용 예제
import pickle
f = open("test.txt", 'wb')
data = {1: 'python', 2: 'you need'}
pickle.dump(data, f)
f.close()
다음은 pickle.dump로 저장한 파일을 pickle.load를 사용해서 원래 있던 딕셔너리 객체 상태 그대로 불러오는 예이다.
아래 예제에서 딕셔너리 객체를 사용했지만 어떤 자료형이든 저장하고 불러올 수 있다.
## pickle 불러오기 예제
import pickle
f = open("test.txt", 'rb')
data = pickle.load(f)
print(data)
→ {1: 'python', 2: 'you need'}
OS
OS 모듈은 환경 변수나 디렉터리, 파일 등의 OS 자원을 제어할 수 있게 해주는 모듈이다.
○ 내 시스템의 환경 변수 값을 알고 싶을 때 - os.environ
시스템은 제각기 다른 환경 변수 값을 가지고 있는데, os.environ은 현재 시스템의 환경 변수 값을 보여준다.
아래 결과와 같이 본인의 시스템 정보를 확인할 수 있다.
os.environ은 환경 변수에 대한 정보를 딕셔너리 객체로 돌려준다. 자세히 보면 여러 가지 유용한 정보를 찾을 수 있다.
## 시스템 환경 변수 값 확인
import os
os.environ
→ environ({'ALLUSERSPROFILE': 'C:\\ProgramData',
'APPDATA': 'C:\\Users\\itsteam\\AppData\\Roaming' ...]
○ 디렉터리 위치 변경하기 - os.chdir
os.chdir를 사용하면 다음과 같이 현재 디렉터리 위치를 변경할 수 있다.
## 디렉터리 위치 변경하기
os.chdir("C:/WINDOWS")
○ 디렉터리 위치 돌려받기 - os.getcwd
os.getcwd는 현재 자신의 디렉터리 위치를 돌려준다.
## 디렉터리 위치 돌려받기
os.getcwd()
→ 'C:\\WINDOWS'
○ 시스템 명령어 호출하기 - os.system
시스템 자체의 프로그램이나 기타 명령어를 파이썬에서 호출할 수도 있다.
os.system처럼 사용한다. 아래 예제는 현재 디렉터리에서 시스템 명령어 dir을 실행하는 예제이다.
## 시스템 명령어 호출하기
os.system("dir")
→ C:\Windows 디렉터리
2025-01-01 오후 06:39 <DIR> .
2025-01-01 오후 06:15 <DIR> addins
...
○ 실행한 시스템 명령어의 결괏값 돌려받기 - os.popen
os.popen은 시스템 명령어를 실행한 결괏값을 읽기 모드 형태의 파일 객체로 돌려준다.
os.system의 결괏값과 동일하게 나오는 것을 확인할 수 있다.
## 실행한 시스템 명령어의 결괏값 돌려받기
f = os.popen("dir")
print(f.read())
→ C:\Windows 디렉터리
2025-01-01 오후 06:39 <DIR> .
2025-01-01 오후 06:15 <DIR> addins
...
○ 기타 유용한 os 관련 함수
|
함수
|
설명
|
|
os.mkdir(디렉터리)
|
디렉터리를 생성한다.
|
|
os.rmdir(디렉터리)
|
디렉터리를 삭제한다.
(단, 디렉터리가 비어 있어야 삭제가 가능하다.) |
|
os.unlink(파일 이름)
|
파일을 지운다.
|
|
os.rename(src, dst)
|
src라는 이름의 파일을 dst라는 이름으로 바꾼다.
|
shutil
shutil은 파일을 복사하거나 이동할 때 사용하는 모듈이다.
작업 중인 파일을 자동으로 백업하는 기능을 구현하고자 c:\ipmes1\a.txt를 c:\temp\a.txt.bak이라는 이름으로 복사하는 프로그램을 만들고자 한다. c:\ipmes1 디렉터리에 a.txt를 만드는 중이며 백업용 c:\temp 디렉터리는 이미 만들었다고 가정한다.
아래 예제를 실행해 보면 a.txt 파일과 동일한 내용의 파일이 a.txt.bak으로 복사되는 것을 확인할 수 있다.
## shutil 사용하여 파일 복사
import shutil
shutil.copy("c:/ipmes1/a.txt", "c:/temp/a.txt.bak")
glob
가끔 파일을 읽고 쓰는 기능이 있는 프로그램을 만들다 보면 특정 디렉터리에 있는 파일 이름 모두를 알아야 할 때가 있다.
이때 사용하는 모듈이 glob이다.
○ 디렉터리에 있는 파일들을 리스트로 만들기 - glob(pathname)
glob 모듈은 디렉터리 안의 파일들을 읽어서 돌려준다. * , ? 등 메타 문자를 써서 원하는 파일만 읽어 들일 수도 있다.
다음은 C:/ipmes1 디렉터리에 있는 파일 중 이름이 mark로 시작하는 파일을 모두 찾아서 읽어 들이는 예제이다.
만약 mark로 시작하는 파일이 없다면 [ ]로 빈 공간을 보여준다.
## 디렉터리에 있는 파일들을 리스트로 만들기
import glob
glob.glob("C:/ipmes1/mark*")
→ [C:/ipmes1\\marks1.py ...]
tempfile
파일을 임시로 만들어서 사용할 때 유용한 모듈이 바로 tempfile이다.
tempfile.mkstemp()는 중복되지 않는 임시 파일의 이름을 무작위로 만들어서 돌려준다.
## tempfile 예제
import tempfile
filename = tempfile.mkstemp()
filename
→ (5, 'C:\\Users\\ipmes\\AppData\\Local\\Temp\\tmpze16s5v5')
tempfile.TemporaryFile( )은 임시 저장 공간으로 사용할 파일 객체를 돌려준다.
이 파일은 기본적으로 바이너리 쓰기 모드(wb)를 갖는다. f.close( )가 호출되면 이 파일 객체는 자동으로 사라진다.
## tempfile.TemporaryFile( ) 예제
import tempfile
f = tempfile.TemporaryFile()
f.close()
time
시간과 관련된 time 모듈에는 함수가 굉장히 많다. 그 중 유용한 몇 가지만 알아보자.
○ time.time
time.time( )은 UTC를 사용하여 현재 시간을 실수 형태로 리턴하는 함수이다.
1970년 1월 1일 0시 0분 0초를 기준으로 지난 시간을 초 단위로 돌려준다.
## time.time( ) 예제
import time
time.time()
→ 1745474887.628166
○ time.localtime
time.localtime은 time.tiem( )이 돌려준 실수 값을 사용해서 연도, 월, 일, 시, 분, 초, ...의 형태로 바꾸어 주는 함수이다.
## time.localtime( ) 예제
import time
time.localtime(time.time())
→ time.struct_time(tm_year=2025, tm_mon=4, tm_mday=24, tm_hour=15, tm_min=10, tm_sec=31,
tm_wday=3, tm_yday=114, tm_isdst=0)
○ time.asctime
위 time.localtime에 의해서 반환된 튜플 형태의 값을 인수로 받아서 날짜와 시간을 알아보기 쉬운 형태로 돌려주는 함수이다.
## time.asctime( ) 예제
time.asctime(time.localtime(time.time()))
→ 'Thu Apr 24 15:12:27 2025'
○ time.ctime
위의 예제인 'time.asctime(time.localtime(time.time( )))'은 'time.ctime( )'을 사용해 간편하게 표시할 수 있다.
asctime과 다른 점은 ctime은 항상 현재 시간만을 돌려준다는 점이다.
## time.ctime( ) 예제
time.ctime()
→ 'Thu Apr 24 15:14:47 2025'
○ time.strftime
## time.strftime( )의 형태
time.strftime('출력할 형식 포맷 코드', time.localtime(time.time()))
strftime 함수는 시간에 관계된 것을 세밀하게 표현하는 여러 가지 포맷 코드를 제공한다.
|
포맷코드
|
설명
|
예
|
|
%a
|
요일의 줄임말
|
Mon
|
|
%A
|
요일
|
Monday
|
|
%b
|
달의 줄임말
|
Jan
|
|
%B
|
달
|
January
|
|
%c
|
날짜와 시간을 출력함.
|
Thu May 25 10:13:52 2023
|
|
%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
|
현재 설정된 지역에 기반한 날짜 출력
|
05/25/23
|
|
%X
|
현재 설정된 지역에 기반한 시간 출력
|
17:22:21
|
|
%Y
|
연도 출력
|
2023
|
|
%Z
|
시간대 출력
|
대한민국 표준시
|
|
%%
|
문자 %
|
%
|
|
%y
|
세기 부분을 제외한 연도 출력
|
01
|
다음은 time.strftime을 사용하는 예이다.
## time.strftime( )의 예제
import time
time.strftime('%x', time.localtime(time.time()))
→ '04/24/25'
time.strftime('%c', time.localtime(time.time()))
→ 'Thu Apr 24 15:20:49 2025'
○ time.sleep
tiem.sleep 함수는 주로 루프 안에서 많이 사용한다. 이 함수를 사용하면 일정한 시간 간격을 두고 루프를 실행할 수 있다.
아래 예제는 1초 간격으로 0부터 9까지의 숫자를 출력한다.
아래 예제에서 볼 수 있듯이 time.sleep함수의 인수는 실수 형태를 쓸 수 있다. 즉 1이면 1초, 0.5면 0.5초가 되는 것이다.
## time.sleep의 예제
import time
for i in range(10):
print(i)
time.sleep(1)
→ 0
→ 1
...
→ 9
calendar
calendar은 파이썬에서 달력을 볼 수 있게 해주는 모듈이다.
calendar.calendar(연도)로 사용하면 그해의 전체 달력을 볼 수 있다.
calendar.prcal(연도)를 사용해도 아래와 같은 값을 얻을 수 있다.
## calendar.calendar의 예제
import calendar
print(calendar.calendar(2025))
2025
January February March
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 1 2 1 2
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30
31
...
다음 예제는 2025년 12월의 달력만 보여준다.
## calendar.prmonth()의 예제
calendar.prmonth(2025, 12)
December 2025
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
○ calendar.weekday
calendar 모듈의 또 다른 유용한 함수를 보자. weekday(연도, 월, 일) 함수는 그 날짜에 해당하는 요일 정보를 돌려준다.
위의 달력을 보면 2025년 12월 31일은 수요일임을 확인할 수 있다.
이때 0은 월요일, 1은 화요일, 2는 수요일 ... 6은 일요일입니다.
## calendar.prmonth()의 예제
print(calendar.weekday(2025,12,31))
→ 2
○ calendar.monthrange
monthrange(연도, 월) 함수는 입력받은 달의 1일이 무슨 요일인지와 그 달이 며칠까지 있는지를 튜플 형태로 돌려준다.
아래 예제는 2025년 12월 1일은 월요일이고, 이 달은 31일까지 있다는 것을 보여준다.
## calendar.prmonth()의 예제
calendar.monthrange(2025,12)
(calendar.MONDAY, 31)
random
random은 난수를 발생시키는 모듈이다. random과 randint에 대해 알아보자.
다음은 0.0에서 1.0 사이의 실수 중에서 난수 값을 돌려주는 예를 보여 준다.
## random의 예제
import random
random.random()
→ 0.0167263509216673
다음 예제는 1에서 10사이의 정수 중에서 난수 값을 돌려준다.
두 번째줄은 1에서 55사이의 정수 중에서 난수 값을 돌려준다.
## randint의 예제
random.randint(1, 10)
→ 10
random.randint(1, 55)
→ 13
이제 random 모듈을 사용해서 함수를 만들어 보자.
아래 random_pop 함수는 리스트의 요소 중에서 무작위로 하나를 선택하여 꺼낸 다음 그 값을 돌려준다.
꺼낸 요소는 pop 메서드에 의해 사라진다.
## random을 사용하여 함수 만들기
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))
→ 3
→ 5
→ 2
→ 1
→ 4
random_pop 함수는 random 모듈의 choice 함수를 사용하여 다음과 같이 좀 더 직관적으로 만들 수도 있다.
random.choice 함수는 입력으로 받은 리스트에서 무작위로 하나를 선택하여 돌려준다.
## random와 choice를 사용하여 함수 만들기
def random_pop(data):
number = random.choice(data)
data.remove(number)
return number
→ 4
→ 1
→ 5
→ 2
→ 3
리스트의 항목을 무작위로 섞고 싶을 때는 random.shuffle 함수를 사용하면 된다.
## random.shuffle 사용
import random
data = [1, 2, 3, 4, 5]
random.shuffle(data)
data
→ [4, 3, 5, 2, 1]
webbrowser
webbrowser는 자신의 시스템에서 사용하는 기본 웹 브라우저를 자동으로 실행하는 모듈이다.
다음 예제는 웹 브라우저를 자동으로 실행하고 해당 URL인 google.com으로 가게 해준다.
webbrowser의 open 함수는 웹 브라우저가 이미 실행된 상태라면 입력 주소로 이동한다.
만약 웹 브라우저가 실행되지 않은 상태라면 새로 웹 브라우저를 실행한 후 해당 주소로 이동한다.
## webbrowser사용
import webbrowser
webbrowser.open("http://google.com")
→ True 이후 google창이 켜진다.
open_new 함수는 이미 웹 브라우저가 실행된 상태이더라도 새로운 창으로 해당 주소가 열리게 된다.
## open_new 함수 사용
webbrowser.open_new("http://google.com")
→ True 이후 google창이 켜진다.
외부 라이브러리
외부 라이브러리는 pip install 'SomePackage'를 사용하여 설치할 수 있다.
만약, 패키지를 삭제하고 싶다면 pip uninstall 'SomePackage'를 사용하여 삭제할 수 있다.
특정 버전으로 설치하고 싶다면
pip install 'SomePackage==1.0.7' 명령어를 실행하면 1.0.7 버전의 패키지를 설치할 수 있다.
경우에 따라 필요한 패키지를 설치하여 사용하자.
이 외에도 많은 내부 및 외부 라이브러리가 있다.
모든 라이브러리를 설명하기에는 제한되기 때문에 필요에 따라 검색하여 사용하기를 바란다.

TEL (062-226-1777, 010-9891-7244), E-mail (ipmes@ipmes.co.kr)
임베디드 시스템 | PCB 설계 제작 | 펌웨어 개발 | 신호처리 | 응용프로그램
'연구노트 > Python' 카테고리의 다른 글
| 파이썬 프로그래밍 기초(2) (0) | 2025.04.30 |
|---|---|
| 파이썬 프로그래밍 기초(1) (0) | 2025.04.30 |
| 파이썬 내장 함수 (0) | 2025.04.30 |
| Python 예외 처리 (0) | 2025.04.30 |
| 파이썬 패키지 (0) | 2025.04.21 |