
※ 표준 라이브러리란?
파이썬이 기본 제공하는 모듈 모음입니다. 파일/디렉터리, 시스템 정보, 시간, 복사 등
일상적인 작업을 별도 설치 없이 바로 처리할 수 있습니다.
→ os, sys, glob, time, copy와 함께 import 방식, sys.path, 얕은/깊은 복사를 정리합니다.
※ os / os.path : 운영체제와 파일 경로 다루기
os는 디렉터리 생성/명령 실행, os.path는 경로 계산과 파일 메타데이터를 다룹니다.
import os, os.path
# 사용할 수 있는 함수 확인
print(dir(os.path)[:15]) # 일부만 보기
print("현재 경로:", os.path.abspath(""))
# 디렉터리 생성
os.makedirs("sample", exist_ok=True)
# 시스템 명령 실행 (OS에 따라 다름)
# Windows: "notepad" / Linux, macOS: "ls"
os.system("notepad") # Windows 예시
os.system("dir") # Windows 예시 (macOS/Linux: 'ls')
→ os.system은 외부 프로그램/명령을 호출합니다. 운영체제에 맞는 명령을 사용하세요.
파일 시간 정보 읽기 (접근/생성/수정)
import time, os.path
filename = "example.py" # 예시 파일명
if os.path.exists(filename):
at = os.path.getatime(filename) # 마지막 접근 시간 (epoch)
ct = os.path.getctime(filename) # 생성(또는 메타 변경) 시간
mt = os.path.getmtime(filename) # 마지막 수정 시간
# 사람이 보기 좋은 구조로 변환
print("atime:", time.gmtime(at))
print("ctime:", time.gmtime(ct))
print("mtime:", time.gmtime(mt))
else:
print(f"{filename} 파일이 없습니다.")
→ 자동 업데이트/동기화 시 파일의 생성·수정 시각 비교가 핵심입니다.
※ glob : 경로 패턴으로 파일 찾기
와일드카드(*, ?)로 파일/디렉터리 목록을 가져옵니다.
import glob
print(glob.glob("./*.*")) # 현재 폴더 모든 확장자
print(glob.glob("**/*.py", recursive=True)) # 하위 폴더까지 .py 찾기
→ 특정 확장자 일괄 처리(리포트 수집/코드 스캔)에 유용합니다.
※ sys : 파이썬 인터프리터와 런타임 정보
인코딩, 모듈 탐색 경로(sys.path), 예외 정보 등 인터프리터 전반을 확인할 수 있습니다.
import sys
print("현재 인코딩:", sys.getdefaultencoding())
print("파이썬 실행 파일:", sys.executable)
# 모듈을 찾는 순서 (가상환경/다중 파이썬 설치 시 필수 확인)
for p in sys.path:
print(p)
# 현재 로딩된 모듈 수
print("로드된 모듈 개수:", len(sys.modules))
# 참조 카운트 (진단용 - 값은 함수 호출로 +1 증가해 보일 수 있음)
s = "HELLO"
print("참조 횟수:", sys.getrefcount(s))
→ 가상환경/여러 버전의 파이썬을 쓸 때 sys.path를 확인하면 “어떤 경로의 모듈을 쓰는지” 알 수 있습니다.
※ time : 시간/타임스탬프
epoch(1970-01-01 00:00:00 UTC) 기준 초 단위 시간을 다룹니다.
파일 시각을 사람이 읽기 좋은 구조로 바꿀 때 자주 사용합니다.
import time
now_epoch = time.time() # 현재 시각 (초)
print("epoch:", now_epoch)
print("UTC:", time.gmtime(now_epoch))
print("Local:", time.localtime(now_epoch))
# 포맷팅 출력
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(now_epoch)))
→ time.gmtime/localtime은 구조체로 바꿔줍니다. strftime으로 보기 좋게 포맷하세요.
※ copy : 얕은 복사 vs 깊은 복사
얕은 복사(shallow copy)는 “바깥 컨테이너”만 새로 만들고, 내부 원소의 참조는 공유합니다.
깊은 복사(deep copy)는 내부까지 재귀적으로 완전 복제합니다.
import copy
# 1차원 (얕은/깊은 차이가 거의 없음)
li = [100, 200, 300]
w = copy.copy(li)
d = copy.deepcopy(li)
w[0] = 1
print(li) # [100, 200, 300] 원본 영향 없음
# 2차원 (얕은 복사는 내부 참조 공유 → 영향 발생)
li2 = [[1, 2, 3], [4, 5, 6]]
w2 = copy.copy(li2) # 얕은 복사
w2[0][0] = 999
print(li2) # [[999, 2, 3], [4, 5, 6]] ← 원본 영향 O
d2 = copy.deepcopy(li2) # 깊은 복사
d2[0][0] = 777
print(li2) # [[999, 2, 3], [4, 5, 6]] ← 원본 영향 X
→ 중첩 컨테이너를 다룰 때는 깊은 복사를 고려하세요. (메모리/시간 비용도 함께 고려)
※ 모듈 불러오기(import)와 sys.path
파이썬은 sys.path 리스트에 있는 경로를 앞에서부터 탐색하여 모듈을 로드합니다.
# 1) 모듈 전체 가져오기
import math
print(math.sqrt(16))
# 2) 모듈에서 속성만 가져오기
from math import sqrt
print(sqrt(25))
# 3) 별칭(alias) 지정
import datetime as dt
print(dt.datetime.now())
# 4) 전체 가져오기(비권장) - 네임스페이스 오염 우려
from math import *
→ 와일드카드 import는 이름 충돌/가독성 저하가 있어 권장하지 않습니다.
→ 가상환경을 사용하면 해당 가상환경의 site-packages가 sys.path에 포함되어,
프로젝트마다 독립적인 패키지를 사용할 수 있습니다.
# 현재 모듈 탐색 경로 확인
import sys
for p in sys.path:
print(p)
→ “내가 import한 모듈이 어디서 왔는지” 모르면 sys.path부터 확인!
'2025 현대오토에버 모빌리티 SW 스쿨(클라우드 2기) > 파이썬 이론' 카테고리의 다른 글
| [Python] 웹 프로그래밍 기초와 프레임워크 (0) | 2025.09.21 |
|---|---|
| [Python] 예외 처리와 디버깅 (0) | 2025.09.21 |
| [Python] 객체 지향 프로그래밍(OOP) (0) | 2025.09.21 |
| [Python] 함수(Function) 완벽 이해 (0) | 2025.09.21 |
| [Python] 연산자와 제어문 (0) | 2025.09.21 |