본문 바로가기

파이썬 파일 처리 가이드: 입출력부터 데이터 관리까지 요약

발견의끝 2024. 12. 5.

파이썬 파일 처리 및 주요 라이브러리 활용 완벽 가이드

파이썬은 파일 입출력과 관련된 작업을 매우 간단하게 처리할 수 있는 언어입니다. 하지만 파일 처리는 단순히 읽고 쓰는 데 그치지 않고, 파일 및 디렉토리 관리, 데이터 변환, 시스템 명령 실행, 데이터 구조 관리 등 다양한 분야와 연계됩니다. 여기에서는 파일 입출력의 기초부터 고급 기능까지 깊이 있게 다루며, 더불어 관련 작업을 효율적으로 수행할 수 있는 주요 모듈들(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 주요 라이브러리 함수 정리

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)에 대해 간략히 보았습니다.

다음 글에서는 스몰 프로젝를 통해 업무 자동화를 해보겠습니다.

 

댓글