표준 라이브러리 살펴보기 (1부)
표준 라이브러리 살펴보기 (1부)
파이썬은 설치만으로 쓸 수 있는 방대한 표준 라이브러리를 함께 제공해요. 자주 쓰는 기능이 대부분 이미 내장 모듈로 마련돼 있어서, 처음부터 직접 구현할 필요가 거의 없어요. 운영 체제와 상호작용하는 os·shutil부터 파일 와일드카드 glob, 수학 math·random, 날짜 datetime, 웹과 데이터 교환용 urllib·json·sqlite3까지, 매일 쓰는 도구들을 한 바퀴 돌아볼게요.
운영 체제 인터페이스: os · shutil
os 모듈은 운영 체제와 상호작용하는 수십 개의 함수를 제공해요. 경로 처리·디렉터리 탐색 등 기본 작업이 가능하죠. 여기서 주의할 점이 하나 있는데, os.open()이라는 함수가 내장 open()과 전혀 다르게 동작해서, from os import *처럼 쓰면 내장 open을 가려버릴 수 있어요. 그래서 항상 import os 방식으로 쓰는 게 안전해요.
import os
os.getcwd() # 현재 작업 디렉터리
os.listdir('.') # 디렉터리 항목 목록
일상적인 파일·디렉터리 관리에는 os보다 고수준 인터페이스인 shutil이 더 편해요. 파일 복사·이동·아카이브 같은 작업을 한 줄로 처리할 수 있답니다.
import shutil
shutil.copyfile('data.db', 'archive.db')
shutil.move('/build/executables', 'installdir')
파일 와일드카드: glob
디렉터리 검색으로 파일 목록을 만들 때는 glob 모듈이 좋아요. *.py 같은 패턴을 주면 그에 맞는 파일 이름들을 돌려줘요. 특정 확장자·이름 규칙의 파일만 골라낼 때 편리하죠.
import glob
glob.glob('*.py') # ['primes.py', 'random.py', 'quote.py']
수학과 난수: math · random · statistics
math 모듈은 부동소수점 연산을 위한 C 라이브러리 함수를 노출해요. math.cos, math.log 같은 함수를 바로 쓸 수 있고, random 모듈은 무작위 선택 도구를 제공해요.
import math
math.cos(math.pi / 4) # 0.70710678118654757
math.log(1024, 2) # 10.0
import random
random.choice(['apple', 'pear', 'grape'])
random.sample(range(100), 5)
수치 데이터의 평균·중앙값·분산 같은 기본 통계는 statistics 모듈이 계산해 줘요. 숫자 기반 데이터를 다룰 때 손쉽게 척도(대표값)를 뽑을 수 있어요.
날짜와 시간: datetime
datetime 모듈은 날짜·시간을 다루는 클래스들을 제공하고, 날짜 간 산술 연산도 지원해요. 시간대를 아는(timezone-aware) 객체도 만들어서, 국제 서비스에서 시간을 다룰 때 유용해요.
from datetime import date
now = date.today()
delta = date(2026, 12, 31) - now
인터넷 접근: urllib.request · smtplib
인터넷 접근과 프로토콜 처리를 지원하는 모듈이 여럿 있어요. URL에서 데이터를 받아오는 urllib.request와 메일을 보내는 smtplib가 가장 단순한 예시예요. 웹에서 리소스를 내려받거나 알림 메일을 보내는 일을 표준만으로 처리할 수 있죠.
데이터 교환: json · csv · sqlite3
애플리케이션 간 데이터를 주고받을 때도 표준 라이브러리가 강력해요.
json— 널리 쓰이는 데이터 교환 포맷을 파싱·생성해요.csv— 데이터베이스·스프레드시트가 쓰는 쉼표 구분값(CSV) 파일을 직접 읽고 써요.sqlite3— SQLite 데이터베이스 라이브러리를 감싸서, 파일 기반 영구 DB를 가볍게 다룰 수 있게 해 줘요.xml.etree.ElementTree— XML 처리를 지원해요.
내장 모듈만으로 데이터 덤프·교환·저장이 모두 가능해서, 외부 패키지를 추가하기 전에 먼저 떠올려 보면 좋은 도구들이에요.
배터리 포함(Batteries Included)
파이썬 커뮤니티는 '배터리 포함'이라는 표현으로 표준 라이브러리의 넓이를 강조해요. 원격 프로시저 호출을 쉽게 만드는 xmlrpc.client/xmlrpc.server, MIME·RFC 5322 기반 메일 메시지를 다루는 email 패키지, 국제화를 돕는 gettext·locale·codecs까지, 실용적인 기능이 정말 많답니다. 새로 할 일이 생기면 "이미 표준에 없을까?"를 먼저 확인하는 습관이 좋아요.
더 알아보기
- 표준 라이브러리 살펴보기 (2부) — 출력 포맷·스레딩·로깅·자료 구조 도구
- 파이썬 모듈 — 표준 모듈을 가져오는 규칙
- Python 표준 라이브러리 레퍼런스 — 전체 모듈 목록