파이썬은 다양한 표준 라이브러리를 제공하여 개발자들이 효율적으로 작업할 수 있도록 도와줍니다. 이번 포스트에서는 datetime
, os
, sys
모듈을 중심으로 각 모듈의 주요 기능과 활용 방법을 자세히 알아보겠습니다. 각 모듈은 날짜와 시간 관리, 운영 체제와의 상호작용, 시스템 정보 및 프로그램 흐름 제어 등 다양한 작업을 수행하는 데 유용합니다. 이 글에서는 각 모듈의 기능을 깊이 있게 다루고, 실제 프로젝트에서 어떻게 활용할 수 있는지 예제를 통해 설명하겠습니다.
1. datetime
모듈: 날짜와 시간 관리
datetime
모듈은 날짜와 시간을 다루는 데 필수적인 기능을 제공합니다. 이를 통해 날짜 생성, 조작, 포맷팅 등을 쉽게 할 수 있습니다. 이 모듈은 로그 기록, 이벤트 스케줄링, 데이터 분석 등 다양한 분야에서 활용됩니다.
1.1 기본 구성 요소
datetime
클래스: 날짜와 시간을 모두 포함하는 객체입니다.date
클래스: 연도, 월, 일 정보를 가진 객체입니다.time
클래스: 시, 분, 초 및 마이크로초 정보를 가진 객체입니다.timedelta
클래스: 두 날짜 또는 시간 간의 차이를 나타내는 객체입니다.
1.2 주요 기능
1.2.1 현재 날짜와 시간 가져오기
import datetime
# 현재 날짜와 시간
now = datetime.datetime.now()
print("현재 날짜와 시간:", now)
1.2.2 특정 날짜 만들기
# 특정 날짜 생성 (2023년 10월 5일)
specific_date = datetime.date(2023, 10, 5)
print("특정 날짜:", specific_date)
1.2.3 timedelta
를 사용한 날짜 계산
# 오늘부터 일주일 후의 날짜 계산하기
today = datetime.date.today()
one_week_later = today + datetime.timedelta(weeks=1)
print("오늘부터 일주일 후:", one_week_later)
# 하루 전날 계산
yesterday = today - datetime.timedelta(days=1)
print("어제:", yesterday)
1.2.4 날짜 및 시간 형식화
# 형식 지정하여 출력하기 (YYYY-MM-DD 형식으로 변환)
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print("형식화된 현재 시간:", formatted_date)
# 다른 형식 예시 (DD/MM/YYYY)
formatted_custom_date = now.strftime("%d/%m/%Y")
print("다른 형식화된 현재 시간:", formatted_custom_date)
1.2.5 문자열에서 날짜 객체로 변환
date_string = "2023-10-05"
converted_date = datetime.datetime.strptime(date_string, "%Y-%m-%d")
print("문자열에서 변환한 date 객체:", converted_date)
# 다시 문자열로 변환하기
string_from_datetime = converted_date.strftime("%d/%m/%Y")
print("변환한 문자열:", string_from_datetime)
1.2.6 날짜 비교 및 차이 계산
# 두 날짜 비교
date1 = datetime.date(2023, 10, 5)
date2 = datetime.date(2023, 10, 10)
if date1 < date2:
print(f"{date1}은 {date2}보다 이전입니다.")
# 날짜 차이 계산
date_diff = date2 - date1
print(f"두 날짜의 차이: {date_diff.days}일")
1.2.7 시간대 처리
from datetime import datetime, timezone, timedelta
# UTC 시간 가져오기
utc_now = datetime.now(timezone.utc)
print("현재 UTC 시간:", utc_now)
# 시간대 변환 (UTC -> KST)
kst_now = utc_now.astimezone(timezone(timedelta(hours=9)))
print("현재 KST 시간:", kst_now)
2. os
모듈: 운영 체제와의 상호작용
os
모듈은 파일 및 디렉토리 작업, 환경 변수 관리, 프로세스 제어 등 운영 체제와 상호작용하는 데 유용합니다. 이 모듈은 시스템 관리, 파일 처리, 환경 설정 등 다양한 작업에 활용됩니다.
2.1 파일 및 디렉토리 작업
2.1.1 디렉토리 생성 및 삭제
import os
# 'new_directory'라는 이름의 새 디렉토리 생성
os.mkdir('new_directory')
# 'new_directory'라는 이름의 빈 디렉토리 삭제
os.rmdir('new_directory')
2.1.2 현재 작업 디렉토리 확인
# 현재 작업 중인 경로 출력
current_path = os.getcwd()
print("현재 경로:", current_path)
2.1.3 파일 목록 가져오기
# 현재 경로 내의 모든 항목 나열
items = os.listdir('.')
print("현재 경로 내 항목들:", items)
2.1.4 파일 및 디렉토리 존재 여부 확인
# 파일 존재 여부 확인
if os.path.isfile('example.txt'):
print("example.txt 파일이 존재합니다.")
# 디렉토리 존재 여부 확인
if os.path.isdir('new_directory'):
print("new_directory 디렉토리가 존재합니다.")
2.2 환경 변수 관리
2.2.1 환경 변수 조회
# PATH 환경 변수 출력
path_variable = os.environ.get('PATH')
print("PATH:", path_variable)
2.2.2 환경 변수 설정
# MY_ENV_VAR이라는 새로운 환경 변수 설정
os.environ['MY_ENV_VAR'] = 'my_value'
print("MY_ENV_VAR:", os.environ.get('MY_ENV_VAR'))
2.3 프로세스 제어
# ls 명령어 실행 (Unix 계열)
exit_code = os.system('ls')
print("명령어 종료 코드:", exit_code)
2.4 파일 경로 조작
# 파일 경로 조합
file_path = os.path.join('folder', 'subfolder', 'file.txt')
print("조합된 파일 경로:", file_path)
# 파일 경로 분할
dir_name, file_name = os.path.split(file_path)
print("디렉토리 이름:", dir_name)
print("파일 이름:", file_name)
2.5 파일 및 디렉토리 권한 관리
# 파일 권한 변경 (읽기, 쓰기, 실행 권한 부여)
os.chmod('example.txt', 0o755)
print("example.txt 파일 권한 변경 완료.")
# 디렉토리 권한 변경
os.chmod('new_directory', 0o755)
print("new_directory 디렉토리 권한 변경 완료.")
3. sys
모듈: 시스템 정보 및 프로그램 흐름 제어
sys
모듈은 파이썬 인터프리터와 관련된 기능을 제공하며, 명령줄 인수 처리, 모듈 경로 관리, 프로그램 종료 등을 할 수 있습니다. 이 모듈은 스크립트 자동화, 디버깅, 시스템 정보 확인 등에 유용합니다.
3.1 주요 기능
3.1.1 명령줄 인수 처리
import sys
# 전달된 명령줄 인수 출력
print("전달된 명령줄 인수:")
for arg in sys.argv:
print(arg)
3.1.2 파이썬 버전 정보
# 현재 파이썬 버전 출력
print("현재 파이썬 버전:", sys.version)
3.1.3 모듈 경로 관리
# 현재 모듈 검색 경로 출력
print("현재 모듈 검색 경로:")
for path in sys.path:
print(path)
# 새로운 경로 추가
sys.path.append('/my/custom/path')
3.1.4 프로그램 종료
# 인수가 없을 경우 프로그램 종료
if len(sys.argv) < 2:
print("사용법: python script.py <argument>")
sys.exit(1) # 비정상 종료 코드
3.2 실용적인 사용 사례
3.2.1 스크립트 자동화
import os
import sys
# 파일 처리 스크립트
if len(sys.argv) < 2:
print("사용법: python process_files.py <file1> <file2> ...")
exit()
for filename in sys.argv[1:]:
if os.path.isfile(filename):
with open(filename, 'r') as file:
content = file.read()
# 파일 처리 로직 추가
print(f"{filename} 읽기 완료.")
3.2.2 디버깅 및 로그 관리
import sys
# 기본 stdout 변경 (예시)
original_stdout = sys.stdout
with open('log.txt', 'w') as f:
# 모든 출력을 log.txt 파일에 기록
sys.stdout = f
print('로그 시작')
# 원래 stdout 복원
sys.stdout = original_stdout
print('로그가 log.txt에 저장되었습니다.')
3.2.3 시스템 정보 확인
import sys
# 시스템 플랫폼 정보 출력
print("시스템 플랫폼:", sys.platform)
# 파이썬 실행 파일 경로 출력
print("파이썬 실행 파일 경로:", sys.executable)
3.2.4 메모리 사용량 확인
import sys
# 객체의 메모리 사용량 확인
my_list = [i for i in range(10000)]
print(f"리스트의 메모리 사용량: {sys.getsizeof(my_list)} 바이트")
결론
datetime
, os
, sys
모듈은 파이썬 프로그래밍에서 매우 중요한 역할을 합니다. 각 모듈은 날짜와 시간 관리, 운영 체제와의 상호작용, 시스템 정보 및 프로그램 흐름 제어 등 다양한 작업을 수행하는 데 유용합니다. 이러한 모듈을 활용하면 더 효율적이고 강력한 스크립트를 작성할 수 있습니다. 실제 프로젝트에서도 이러한 기능들을 적절히 활용한다면 더욱 효과적이고 편리한 코드를 만들 수 있을 것입니다!
추가 활용 예제
1. 로그 파일에 타임스탬프 추가
import datetime
import os
# 로그 파일에 현재 시간 기록
log_file = 'log.txt'
with open(log_file, 'a') as f:
now = datetime.datetime.now()
f.write(f"[{now}] 새로운 로그 항목 추가\n")
2. 파일 백업 스크립트
import os
import shutil
import sys
# 백업할 파일 경로
source_file = sys.argv[1]
backup_file = source_file + '.bak'
# 파일 백업
if os.path.isfile(source_file):
shutil.copy(source_file, backup_file)
print(f"{source_file} 파일이 {backup_file}로 백업되었습니다.")
else:
print(f"{source_file} 파일이 존재하지 않습니다.")
3. 환경 변수를 이용한 설정 관리
import os
# 환경 변수에서 설정 값 읽기
db_host = os.environ.get('DB_HOST', 'localhost')
db_port = os.environ.get('DB_PORT', '5432')
print(f"데이터베이스 연결 정보: {db_host}:{db_port}")
4. 파일 크기 확인 및 정리
import os
# 특정 디렉토리 내 파일 크기 확인 및 정리
target_dir = 'data'
for filename in os.listdir(target_dir):
file_path = os.path.join(target_dir, filename)
if os.path.isfile(file_path):
file_size = os.path.getsize(file_path)
print(f"{filename}: {file_size} 바이트")
if file_size > 1024 * 1024: # 1MB 이상 파일 삭제
os.remove(file_path)
print(f"{filename} 파일이 삭제되었습니다.")
5. 프로그램 실행 시간 측정
import sys
import time
# 프로그램 실행 시간 측정
start_time = time.time()
# 시간이 걸리는 작업 예시
for i in range(1000000):
pass
end_time = time.time()
elapsed_time = end_time - start_time
print(f"프로그램 실행 시간: {elapsed_time:.2f} 초")
이처럼 datetime
, os
, sys
모듈은 다양한 상황에서 유용하게 사용될 수 있습니다. 각 모듈의 기능을 잘 이해하고 활용한다면, 파이썬 프로그래밍의 효율성을 크게 높일 수 있습니다.
'프로그래밍 > Python' 카테고리의 다른 글
파이썬 최적화 기법: 성능, 메모리, 코드 최적화의 핵심 전략 (0) | 2025.02.21 |
---|---|
파이썬 외부 라이브러리: 설치, 사용, 그리고 가상환경 관리 (0) | 2025.02.21 |
파이썬 고급 자료구조: 리스트 컴프리헨션, 제너레이터, 데코레이터 활용법 (0) | 2025.02.21 |
파이썬 파일 입출력: 파일 열기, 닫기, 읽기, 쓰기, 그리고 CSV 파일 처리 (0) | 2025.02.21 |
파이썬 예외 처리: 기본부터 고급 기법까지 (1) | 2025.02.21 |