본문 바로가기

연구노트/Python

파이썬 라이브러리

 

 
파이썬 라이브러리

 

라이브러리란?

 

파이썬 프로그래밍 능력을 높여 줄 도구를 알아보자.

전 세계의 파이썬 고수들이 만든 유용한 프로그램을 모아 놓은 것이 바로 파이썬 표준 라이브러리이다.

‘라이브러리’는 ‘도서관’이라는 뜻 그대로 원하는 정보를 찾아보는 곳이다.

모든 라이브러리를 다 알 필요는 없고 어떤 일을 할 때 어떤 라이브러리를 사용해야 한다는 정도만 알면 된다.

이를 위해 어떤 라이브러리가 존재하고 어떻게 사용하는지 알아야 한다.

자주 사용되고 꼭 알아 두면 좋은 라이브러리를 중심으로 하나씩 살펴보자.

 

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