Python에서 파일 처리하기
요약
본 문서는 Python에서 파일을 다루는 기본적인 방법을 설명하며, `with open()` 구문을 사용하여 안전하게 파일 자원을 관리하는 것이 가장 권장됩니다. 다양한 모드(`r`, `w`, `a`, `x`)와 읽기/쓰기 메서드를 통해 텍스트, JSON, CSV 등 여러 형식의 데이터를 효율적으로 처리할 수 있습니다.
핵심 포인트
- `with open()` 사용은 파일 자동 종료를 보장하는 최적의 방법입니다.
- 파일 모드(`r`, `w`, `a`)에 따라 읽기 전용, 쓰기 덮어쓰기, 내용 추가가 결정됩니다.
- 대용량 파일 처리는 반복문(for line in file)을 사용하는 것이 메모리 효율적입니다.
- JSON과 CSV 데이터는 각각 `json` 및 `csv` 모듈을 사용하여 구조화된 형태로 처리할 수 있습니다.
Python에서 파일 처리는 코드를 통해 파일을 생성, 읽기, 업데이트 및 삭제할 수 있게 해주므로 중요합니다. Python은 내장된 open() 함수를 사용하여 이러한 작업을 관리하며, 이 함수는 파일 시스템과 상호 작용하기 위한 파일 객체를 생성합니다.
with 구문 (Statement)
Python에서 파일을 여는 가장 권장되는 모범 사례(best practice)이자 방법은 with 키워드를 사용하는 것입니다. 이는 코드 블록이 완료되면 오류가 발생하더라도 자동으로 파일을 닫아줍니다. 이를 통해 메모리 누수(memory leaks)와 파일 손상(file corruption)을 방지할 수 있습니다.
# 이 블록 외부에서 파일이 자동으로 닫힙니다
with open("example.txt", "r") as file:
content = file.read()
...
파일 열기 모드 (File Open Modes)
open() 함수의 두 번째 인수는 "모드(mode)"를 지정하며, 이는 파일을 어떻게 상호 작용할지(how you want to interact with the file) 결정합니다.
"r"(Read): 기본 모드입니다. 읽기 전용으로 파일을 엽니다. 파일이 존재하지 않으면FileNotFoundError가 발생합니다."w"(Write): 쓰기 전용으로 파일을 엽니다. 기존 내용을 덮어씁니다(Overwrites existing content). 파일이 존재하지 않으면 새 파일을 생성합니다."a"(Append): 파일의 끝에 데이터를 추가하기 위해 파일을 엽니다. 기존 내용은 지우지 않습니다. 파일이 존재하지 않으면 새 파일을 생성합니다."x"(Create): 특정 파일을 생성합니다. 파일이 이미 존재하는 경우 오류를 반환합니다.
파일 읽기 (Reading Files)
.txt
Python은 열린 파일에서 텍스트를 추출하기 위한 여러 메서드를 제공합니다:
read(size): 전체 파일을 단일 문자열로 읽습니다. 선택적 정수 크기(optional integer size)를 전달하여 특정 개수의 문자만 읽을 수 있습니다.readline(): 한 번에 한 줄씩만 읽습니다. 대용량 파일을 줄 단위로 읽는 데 유용합니다.readlines(): 모든 줄을 한 번에 읽어 문자열 리스트(list of strings)로 반환합니다.Line Loop (효율적): 파일 객체를 루프를 사용하여 직접 반복할 수 있으며, 이는 대용량 파일에 메모리 효율적입니다.
# 줄 단위로 효율적으로 읽기
with open("large_file.txt", "r") as file:
for line in file:
...
파일 읽기
.txt
한 번에 전체 내용을 읽는 방법
with open("example.txt", "r", encoding="utf-8") as file:
content = file.read()
...
.json
- Python은 JSON 데이터를 딕셔너리(dictionary)와 리스트(list)로 직접 변환합니다.
import json
with open('data.json', 'r') as file:
...
.csv
import csv
with open('data.csv', mode='r', encoding='utf-8') as file:
...
파일 쓰기
.txt
내용을 추가하려면 파일을 쓰기 모드("w") 또는 추가 모드("a")로 엽니다:
• write(string): 문자열을 파일에 삽입합니다.
• writelines(list): 문자열 리스트를 한 번에 파일에 삽입합니다.
lines_to_write = ["First line\n", "Second line\n"]
with open("output.txt", "w") as file:
...
.json
import json
# 데이터 구조 (Python 딕셔너리)
...
.csv
import csv
# 리스트의 리스트 형태로 구성된 데이터 (행)
...
파일 삭제 및 디렉터리 삭제
파일을 삭제하거나 이름을 변경하는 것과 같은 파일 시스템 작업을 위해서는 Python의 내장 모듈인 os를 가져와야 합니다.
import os
# 파일을 안전하게 삭제합니다
...
결론
파일 처리는 데이터 영속성(data persistence)을 가능하게 하므로 매우 중요합니다. 이를 통해 프로그램이 정보를 저장 장치에 영구적으로 보관할 수 있게 되어 애플리케이션이 종료되거나 시스템 전원이 꺼져도 정보가 손실되지 않습니다. 파일 처리는 소프트웨어 상호 운용성(software interoperability)을 위한 범용적인 다리 역할을 하며, CSV나 JSON과 같은 표준화된 형식을 사용하여 서로 다른 시스템들이 데이터를 교환할 수 있게 하고, 컴퓨터의 임시 메모리(RAM)에 담기에는 너무 큰 대규모 데이터셋을 효율적으로 스트림 처리할 수 있도록 합니다. 또한, 애플리케이션 구성 설정(configuration settings)을 유지하고 장기적인 감사 로그(audit logs)를 생성하는 데 필수적이므로, 기능적이고 확장 가능하며 안전한 소프트웨어를 구축하기 위한 기초 도구입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기