파이썬 공부
들어가며
지난 글에서는 lambda 키워드를 사용해 이름 없는 한 줄짜리 익명 함수를 만드는 법을 배웠습니다. 람다를 통해 우리는 다른 함수의 인자로 간단한 함수를 즉석에서 전달하여 코드를 더욱 간결하고 명확하게 만들 수 있었습니다.
지금까지 우리는 파이썬이라는 언어의 핵심 문법과 개념들을 깊이 있게 탐험해왔습니다. 변수와 자료구조부터 제어문, 함수, 클래스와 상속, 그리고 예외 처리에 이르기까지, 이제 여러분은 파이썬의 ‘언어’ 자체에 대해서는 거의 모든 것을 배운 셈입니다.
하지만 훌륭한 목수는 좋은 연장을 잘 다루는 법을 알아야 합니다. 파이썬의 진정한 강력함은 언어 자체의 우아함뿐만 아니라, 처음부터 함께 제공되는 방대하고 유용한 ‘기본 연장 세트’에 있습니다. 이 연장 세트가 바로 파이썬 표준 라이브러리(Python Standard Library)입니다.
이번 글에서는 “배터리가 포함되어 있다(Batteries included)”는 파이썬의 철학을 대표하는 표준 라이브러리의 개념을 알아보고, 그중에서도 가장 기본적이면서도 활용도 높은 두 가지 모듈, datetime과 os의 사용법을 익혀보겠습니다.
표준 라이브러리란?
파이썬 표준 라이브러리는 파이썬을 설치할 때 기본적으로 함께 설치되는 방대한 양의 모듈(Module) 모음입니다. 마치 우리가 스마트폰을 사면 전화, 메시지, 카메라, 캘린더 앱이 기본적으로 설치되어 있는 것과 같습니다. 우리가 별도로 무언가를 추가 설치하지 않아도, 파이썬은 이미 수많은 유용한 기능들을 ‘내장’하고 있습니다.
표준 라이브러리에는 다음과 같은 다양한 작업을 위한 도구들이 포함되어 있습니다.
- 날짜와 시간 처리 (
datetime,time) - 수학 및 통계 계산 (
math,random,statistics) - 파일 및 디렉터리 관리 (
os,glob,shutil) - 데이터 압축 (
zipfile,gzip) - 인터넷 통신 (
http,urllib,socket) - 그리고 훨씬 더 많은 기능들…
이 모듈들을 사용하기 위해서는 우리가 이미 배운 import 키워드를 사용하기만 하면 됩니다. 이제, 가장 유용한 두 가지 모듈을 직접 사용해 봅시다.
시간을 다루는 마법사: datetime 모듈
프로그램을 만들다 보면 현재 시간을 기록하거나, 특정 날짜를 계산하거나, 날짜를 원하는 형식의 문자열로 표현해야 하는 경우가 매우 많습니다. datetime 모듈은 이 모든 작업을 손쉽게 처리할 수 있도록 도와줍니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# datetime 모듈을 가져옵니다.
import datetime
# 1. 현재 날짜와 시간 얻기
now = datetime.datetime.now()
print(f"현재 시간: {now}")
# 2. 특정 날짜와 시간 객체 만들기
christmas = datetime.datetime(2025, 12, 25, 0, 0, 0)
print(f"올해 크리스마스: {christmas}")
# 3. 날짜를 원하는 형식의 문자열로 바꾸기 (strftime: string format time)
formatted_now = now.strftime("%Y년 %m월 %d일 %H시 %M분")
print(f"포맷된 시간: {formatted_now}")
# 4. 두 날짜 사이의 간격 계산하기
time_gap = christmas - now
print(f"크리스마스까지 남은 시간: {time_gap}")
datetime 모듈을 사용하면 복잡한 시간 계산이나 형식 변환을 단 몇 줄의 코드로 간단하게 해결할 수 있습니다.
운영체제와 대화하기: os 모듈
os 모듈은 운영체제(Operating System)의 기능과 상호작용할 수 있는 방법을 제공합니다. 주로 파일이나 디렉터리(폴더)를 생성, 삭제, 조회하는 등 파일 시스템을 다룰 때 매우 유용하게 사용됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# os 모듈을 가져옵니다.
import os
# 1. 현재 작업 디렉터리 확인하기 (Current Working Directory)
current_path = os.getcwd()
print(f"현재 위치: {current_path}")
# 2. 특정 경로에 있는 파일 및 디렉터리 목록 보기
file_list = os.listdir('.') # '.'은 현재 디렉터리를 의미합니다.
print(f"현재 디렉터리의 파일/폴더: {file_list}")
# 3. 디렉터리 생성하기
try:
os.mkdir('new_folder')
print("'new_folder'를 생성했습니다.")
except FileExistsError:
print("'new_folder'는 이미 존재합니다.")
# 4. 파일 경로를 안전하게 합치기 (★★★★★ 중요!)
# 'data/files/log.txt' 와 같은 경로를 만들 때,
# 운영체제에 따라 경로 구분자가 다르므로 (Windows: \, Mac/Linux: /)
# os.path.join()을 사용하는 것이 안전하고 이식성이 높습니다.
log_file_path = os.path.join('data', 'files', 'log.txt')
print(f"생성된 파일 경로: {log_file_path}")
특히 os.path.join()은 운영체제가 바뀌어도 코드를 수정할 필요가 없도록 만들어주는 매우 중요한 함수이므로 반드시 기억해 두는 것이 좋습니다.
마무리하며
이번 글에서는 파이썬을 설치하면 기본으로 따라오는 강력한 도구 모음인 표준 라이브러리의 개념을 배우고, 그중 가장 핵심적인 datetime과 os 모듈의 사용법을 익혔습니다. 이제 우리는 시간 데이터를 자유자재로 다루고, 파일과 디렉터리를 코드로 제어하는 기본적인 능력을 갖추게 되었습니다.
오늘 살펴본 것은 거대한 표준 라이브러리의 극히 일부에 불과합니다. 앞으로 프로그래밍을 하다가 ‘이런 기능은 이미 누가 만들어 놓지 않았을까?’라는 생각이 든다면, 가장 먼저 파이썬 표준 라이브러리 공식 문서를 찾아보는 습관을 들이는 것이 좋습니다.
그런데 만약, 표준 라이브러리에도 내가 원하는 기능이 없다면 어떻게 해야 할까요? 예를 들어, 웹 페이지의 내용을 가져오거나, 엑셀 파일을 처리하거나, 이미지에 필터를 적용하는 복잡한 작업이 필요하다면 말입니다.
다행히도 파이썬의 생태계는 표준 라이브러리에서 끝나지 않습니다. 전 세계의 수많은 개발자가 만들어 공개한 어마어마한 양의 외부 라이브러리(Third-party Libraries)가 존재합니다. 다음 글에서는 이 외부 라이브러리들을 어떻게 검색하고, 내 컴퓨터에 설치하며, 사용할 수 있는지, 파이썬의 패키지 관리자인 pip의 사용법에 대해 알아보겠습니다.