매일같이 반복되는 파일 작업, 혹시 아직도 수동으로 하고 계신가요? 로그 파일 분석, 대용량 데이터 처리, 텍스트 편집… 단순하지만 끝없는 ‘복붙’의 굴레에서 벗어나고 싶다면 파이썬(Python)이 정답입니다.
파이썬은 파일 처리를 위해 태어난 언어처럼 느껴질 만큼, 복잡한 파일 작업도 단 몇 줄의 코드로 해결해 줍니다. 오늘은 여러분의 소중한 시간과 정신 건강을 지켜줄, 파이썬 파일 처리의 핵심 기술들을 A부터 Z까지 알려드리겠습니다.
1. 파일 읽기: 모든 작업의 시작
가장 기본은 파일을 열어서 내용을 읽는 것입니다. 파이썬의 open() 함수와 with 문을 사용하면 아주 깔끔하게 처리할 수 있습니다. with 문을 쓰면 파일을 다 쓴 후 자동으로 닫아주기 때문에 실수를 방지할 수 있죠.
통째로 읽어오기 (read)
파일이 크지 않다면 한 번에 다 읽어오는 게 가장 편합니다.
Python
with open("server.log", "r") as f:
content = f.read()
print(content)
한 줄씩 읽기 (readline, readlines)
대용량 파일이나 줄 단위 처리가 필요할 때는 한 줄씩 읽거나 리스트로 가져오는 것이 효율적입니다.
Python
# 한 줄씩 처리
with open("users.txt", "r") as f:
for line in f:
print(line.strip()) # strip()으로 불필요한 공백 제거
# 모든 줄을 리스트로 저장
with open("data.txt", "r") as f:
lines = f.readlines()
print(lines[5]) # 6번째 줄에 바로 접근 가능!
2. 파일 쓰기: 데이터 저장의 기술
파일을 읽었다면, 이제 가공한 데이터를 저장할 차례입니다. open() 함수에서 모드만 바꿔주면 됩니다.
"w" (Write): 새 파일을 만들거나 기존 내용을 싹 지우고 새로 씁니다. (보고서 생성 등)"a" (Append): 기존 파일 끝에 내용을 덧붙입니다. (로그 기록 등)
Python
# 새로 쓰기
report = "일일 요약: 모든 시스템 정상.\n"
with open("summary.txt", "w") as f:
f.write(report)
# 이어 쓰기
log_entry = "사용자 로그인: 14:32\n"
with open("activity.log", "a") as f:
f.write(log_entry)
만약 여러 줄의 리스트를 한 번에 파일로 저장하고 싶다면 writelines()를 사용하세요.
3. 파일 내용 검색: 바늘 찾기보다 쉬운 텍스트 검색
수천 줄의 로그에서 ‘ERROR’ 메시지만 찾고 싶다면? 파이썬 반복문이나 정규표현식(Regex)을 쓰면 순식간입니다.
단순 단어 검색
Python
target = "ERROR"
with open("server.log", "r") as f:
for line in f:
if target in line:
print("에러 발견:", line.strip())
패턴 검색 (정규표현식)
아이디나 특정 형식의 데이터를 찾을 때는 re 모듈이 강력합니다. 예를 들어, “User [숫자] logged in” 패턴을 찾아볼까요?
Python
import re
pattern = re.compile(r"User\s+\d+\s+logged\s+in")
# ... (파일 읽기 및 search 메서드 활용)
4. 내용 바꾸기: 대량 수정도 한 방에
파일 내의 특정 단어를 모두 바꿔야 할 때, 파일을 열고 일일이 수정하는 건 비효율적입니다. 파이썬의 replace() 메서드를 활용하세요.
Python
old = "ERROR"
new = "INFO"
# 파일을 읽어서 내용을 바꾼 뒤
updated = content.replace(old, new)
# 다시 파일에 덮어씁니다.
with open("server.log", "w") as f:
f.write(updated)
복잡한 패턴의 텍스트를 구조적으로 바꿔야 한다면 re.sub() 함수가 마법 같은 해결책이 됩니다.
5. 파일 쪼개기와 합치기: 빅데이터도 문제없어
너무 커서 열리지 않는 파일을 나누거나, 수십 개의 로그 파일을 하나로 합쳐야 할 때도 파이썬이 해결사입니다.
- 쪼개기:
enumerate를 사용해 줄 수를 세면서 일정 단위(예: 1000줄)마다 새로운 파일에 저장하면 됩니다. - 합치기:
glob 모듈로 폴더 내의 모든 파일을 리스트로 가져온 뒤, 반복문을 돌며 하나의 파일에 내용을 계속 덧붙이면 끝!
Python
import glob
with open("merged_output.txt", "w") as outfile:
for filename in glob.glob("logs/log*"):
with open(filename, "r") as infile:
outfile.write(infile.read())
6. 안전장치: 에러 처리하기 (try-except)
파일 작업은 언제나 예상치 못한 에러가 발생할 수 있습니다. 파일이 없거나 권한이 없을 때 프로그램이 멈추지 않도록 try-except 구문으로 감싸주는 것이 좋습니다. 인코딩 문제(UnicodeDecodeError)를 해결할 때도 유용합니다.
결론: 파이썬은 최고의 파일 비서
이 모든 작업을 엑셀이나 메모장으로 한다고 상상해 보세요. 파이썬은 단순 반복 작업에서 우리를 해방시켜 줄 강력한 도구입니다. 오늘 소개한 코드 조각들을 활용해 여러분만의 자동화 스크립트를 만들어보세요. 퇴근 시간이 훨씬 빨라질 것입니다!
더 궁금한 점이 있거나, 해결하고 싶은 파일 처리 문제가 있다면 댓글로 남겨주세요!