파이썬 파일 처리 가이드: 입출력부터 데이터 관리까지 요약
파이썬 파일 처리 및 주요 라이브러리 활용 완벽 가이드
파이썬은 파일 입출력과 관련된 작업을 매우 간단하게 처리할 수 있는 언어입니다. 하지만 파일 처리는 단순히 읽고 쓰는 데 그치지 않고, 파일 및 디렉토리 관리, 데이터 변환, 시스템 명령 실행, 데이터 구조 관리 등 다양한 분야와 연계됩니다. 여기에서는 파일 입출력의 기초부터 고급 기능까지 깊이 있게 다루며, 더불어 관련 작업을 효율적으로 수행할 수 있는 주요 모듈들(os, sys, re, math, random, datetime, time, json, csv, collections, itertools, functools, subprocess, logging)을 간단히 소개합니다.
파일 처리 기초 및 활용
파일 열기와 닫기
파이썬에서 파일 처리는 기본적으로 open() 함수로 시작합니다. 이 함수는 파일을 열고 파일 객체를 반환합니다. 파일 처리가 끝난 후에는 반드시 close() 메서드를 호출하여 파일 리소스를 해제해야 합니다.
기본 파일 열기와 닫기
file = open("example.txt", "r") # 읽기 모드로 열기
content = file.read() # 파일의 모든 내용 읽기
print(content)
file.close() # 파일 닫기
안전한 파일 작업: with 문 사용
with 문을 사용하면 파일을 열고 닫는 작업이 자동으로 처리됩니다.
with open("example.txt", "r") as file:
content = file.read()
print(content)
# 파일이 자동으로 닫힙니다.
파일 읽기
전체 파일 읽기
with open("example.txt", "r") as file:
content = file.read()
print(content)
한 줄씩 읽기
with open("example.txt", "r") as file:
for line in file:
print(line.strip()) # 줄바꿈 문자 제거
특정 바이트 읽기
파일 크기가 큰 경우, 파일의 일부만 읽는 것이 효율적입니다.
with open("example.txt", "r") as file:
chunk = file.read(10) # 처음 10바이트 읽기
print(chunk)
파일 쓰기
새 파일 생성 및 내용 쓰기
with open("output.txt", "w") as file:
file.write("파이썬 파일 쓰기 예제\n")
file.write("여기에 새로운 줄을 추가합니다.")
기존 파일에 내용 추가
with open("output.txt", "a") as file:
file.write("\n이것은 추가된 내용입니다.")
파일 및 디렉토리 관리: os 모듈
os 모듈은 운영 체제와 상호 작용하여 파일 및 디렉토리를 생성, 삭제, 복사, 이동하는 작업을 수행합니다.
디렉토리 생성 및 제거
import os
# 새 디렉토리 생성
os.mkdir("new_folder")
# 디렉토리 제거
os.rmdir("new_folder")
파일 삭제 및 이름 변경
# 파일 삭제
os.remove("example.txt")
# 파일 이름 변경
os.rename("old_name.txt", "new_name.txt")
현재 작업 디렉토리 확인 및 변경
print("현재 디렉토리:", os.getcwd())
# 디렉토리 변경
os.chdir("/path/to/directory")
print("변경된 디렉토리:", os.getcwd())
파일 및 디렉토리 내용 확인
print("현재 디렉토리 내용:", os.listdir("."))
시스템 관련 작업: sys 모듈
sys 모듈은 파이썬 인터프리터와 관련된 다양한 정보를 제공합니다. 특히, 명령줄 인수 처리와 시스템 종료와 같은 기능을 제공합니다.
명령줄 인수 처리
명령줄에서 전달된 인수는 sys.argv 리스트를 통해 접근할 수 있습니다.
import sys
print("명령줄 인수:", sys.argv)
if len(sys.argv) > 1:
print("첫 번째 인수:", sys.argv[1])
시스템 종료
import sys
print("프로그램 종료")
sys.exit()
문자열 검색 및 변환: re 모듈
정규 표현식은 복잡한 문자열 검색과 변환을 매우 간단하게 처리할 수 있게 합니다. 파이썬에서는 re 모듈을 사용하여 이를 수행할 수 있습니다.
문자열 검색
import re
text = "파이썬은 강력한 프로그래밍 언어입니다."
pattern = r"파이썬"
match = re.search(pattern, text)
if match:
print("매칭된 문자열:", match.group())
문자열 치환
result = re.sub(r"파이썬", "Python", text)
print(result)
수학 및 확률 작업: math, random 모듈
수학 연산: math 모듈
수학적 계산과 관련된 함수들을 제공합니다.
import math
print("제곱근:", math.sqrt(16))
print("삼각함수 (sin):", math.sin(math.radians(30)))
print("로그:", math.log(100, 10))
난수 생성: random 모듈
난수를 생성하거나 데이터를 무작위로 선택하는 작업에 유용합니다.
import random
print("0~1 사이 난수:", random.random())
print("1~10 사이 정수:", random.randint(1, 10))
날짜와 시간 작업: datetime, time 모듈
현재 시간 가져오기
from datetime import datetime
now = datetime.now()
print("현재 시간:", now)
시간 지연 및 실행 시간 측정
import time
start = time.time()
time.sleep(2) # 2초 대기
end = time.time()
print("실행 시간:", end - start)
데이터 저장 및 읽기: json, csv 모듈
JSON 데이터 처리
import json
data = {"name": "홍길동", "age": 30}
with open("data.json", "w") as file:
json.dump(data, file)
with open("data.json", "r") as file:
loaded_data = json.load(file)
print(loaded_data)
CSV 파일 처리
import csv
# 쓰기
with open("example.csv", "w", newline="") as file:
writer = csv.writer(file)
writer.writerow(["이름", "나이", "직업"])
writer.writerow(["홍길동", "30", "프로그래머"])
# 읽기
with open("example.csv", "r") as file:
reader = csv.reader(file)
for row in reader:
print(row)
고급 데이터 처리: collections, itertools, functools
collections: 데이터 구조 확장
from collections import Counter
data = ["apple", "banana", "apple"]
counter = Counter(data)
print(counter)
itertools: 반복자 생성
from itertools import permutations
data = ["a", "b", "c"]
for perm in permutations(data):
print(perm)
functools: 함수 캐싱
from functools import lru_cache
@lru_cache(maxsize=100)
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
print(factorial(10))
외부 명령 실행 및 로깅
외부 프로세스 실행: subprocess
import subprocess
result = subprocess.run(["echo", "Hello, World!"], capture_output=True, text=True)
print(result.stdout)
로깅: logging
import logging
logging.basicConfig(level=logging.INFO)
logging.info("정보 메시지")
함수 요약
Python 주요 라이브러리 함수 정리
os 모듈
함수 | 설명 |
---|---|
os.mkdir(path) | 새 디렉토리를 생성합니다. |
os.rmdir(path) | 빈 디렉토리를 제거합니다. |
os.remove(path) | 파일을 삭제합니다. |
os.rename(src, dst) | 파일의 이름을 변경합니다. |
os.getcwd() | 현재 작업 디렉토리를 반환합니다. |
sys 모듈
함수 | 설명 |
---|---|
sys.argv | 명령줄 인수를 리스트로 반환합니다. |
sys.exit() | 프로그램을 종료합니다. |
re 모듈
함수 | 설명 |
---|---|
re.search(pattern, string) | 문자열에서 패턴을 검색합니다. |
re.sub(pattern, repl, string) | 패턴에 매칭된 부분을 대체합니다. |
math 모듈
함수 | 설명 |
---|---|
math.sqrt(x) | 숫자의 제곱근을 반환합니다. |
math.sin(x) | 라디안 값의 사인 값을 반환합니다. |
math.log(x, base) | 주어진 밑(base)의 로그 값을 반환합니다. |
random 모듈
함수 | 설명 |
---|---|
random.random() | 0과 1 사이의 난수를 반환합니다. |
random.randint(a, b) | a와 b 사이의 정수를 반환합니다. |
datetime 모듈
함수 | 설명 |
---|---|
datetime.now() | 현재 날짜와 시간을 반환합니다. |
json 모듈
함수 | 설명 |
---|---|
json.dump(obj, file) | 파이썬 객체를 JSON 파일에 저장합니다. |
json.load(file) | JSON 파일을 파이썬 객체로 읽어옵니다. |
csv 모듈
함수 | 설명 |
---|---|
csv.writer(file) | CSV 파일에 쓰기 위한 writer 객체를 생성합니다. |
csv.reader(file) | CSV 파일을 읽기 위한 reader 객체를 생성합니다. |
subprocess 모듈
함수 | 설명 |
---|---|
subprocess.run(args) | 명령을 실행하고 결과를 반환합니다. |
logging 모듈
함수 | 설명 |
---|---|
logging.info(msg) | 정보 메시지를 로깅합니다. |
마무리
이 글에서는 파이썬 파일 처리 및 주요 라이브러리(os, sys, re, math, random, datetime, time, json, csv, collections, itertools, functools, subprocess, logging)에 대해 간략히 보았습니다.
다음 글에서는 스몰 프로젝를 통해 업무 자동화를 해보겠습니다.
'코딩 > PYTHON' 카테고리의 다른 글
파이썬 os 모듈 완벽 가이드: 운영 체제와의 상호작용 방법 (0) | 2024.12.03 |
---|---|
파이썬 : 함수와 모듈 예제와 설명 (0) | 2024.12.02 |
파이썬 논리 연산과 조건문 조합 (0) | 2024.11.30 |
파이썬 반복문: 제어 흐름과 논리 (0) | 2024.11.30 |
파이썬 조건문: 제어 흐름과 논리 (1) | 2024.11.29 |
댓글