2 minute read

파이썬 파일(File) 입출력 완벽 가이드: 데이터 저장 및 관리의 핵심, 초보자도 쉽게 이해하는 방법

파이썬은 파일을 읽고 쓰는 기능을 제공하여 데이터를 영구적으로 저장하고 관리할 수 있도록 지원합니다. 파일 입출력은 프로그램이 외부 데이터와 상호작용하는 데 필수적인 요소입니다. 이 글에서는 파이썬 파일 입출력의 개념, 사용법, 다양한 활용법을 예제 코드와 함께 자세히 설명합니다.

1. 파일 입출력 기본 개념

파일 입출력은 다음과 같은 단계를 거쳐 수행됩니다.

  1. 파일 열기: open() 함수를 사용하여 파일을 열고 파일 객체를 생성합니다.
  2. 파일 읽기/쓰기: 파일 객체의 메서드를 사용하여 데이터를 읽거나 씁니다.
  3. 파일 닫기: close() 메서드를 사용하여 파일을 닫고 자원을 해제합니다.

2. 파일 열기: open() 함수

open() 함수는 파일을 열고 파일 객체를 반환합니다.

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  • file: 파일 경로를 나타내는 문자열입니다.
  • mode: 파일 열기 모드를 나타내는 문자열입니다. 주요 모드는 다음과 같습니다.
    • 'r': 읽기 모드 (기본값)
    • 'w': 쓰기 모드 (기존 내용 삭제)
    • 'a': 추가 모드 (기존 내용 뒤에 추가)
    • 'b': 바이너리 모드
    • 't': 텍스트 모드 (기본값)
    • '+': 읽기/쓰기 모드
f = open("my_file.txt", "r")  # 읽기 모드로 파일 열기
f = open("my_file.txt", "w")  # 쓰기 모드로 파일 열기

3. 파일 읽기: read(), readline(), readlines()

  • read(): 파일 전체 내용을 하나의 문자열로 읽어옵니다.
  • readline(): 파일에서 한 줄을 읽어옵니다.
  • readlines(): 파일 전체 내용을 줄 단위로 나누어 리스트로 읽어옵니다.
f = open("my_file.txt", "r")
content = f.read()
print(content)

f = open("my_file.txt", "r")
line = f.readline()
print(line)

f = open("my_file.txt", "r")
lines = f.readlines()
print(lines)

4. 파일 쓰기: write(), writelines()

  • write(): 문자열을 파일에 씁니다.
  • writelines(): 문자열 리스트를 파일에 씁니다.
f = open("my_file.txt", "w")
f.write("Hello, World!\n")
f.writelines(["Line 1\n", "Line 2\n"])

5. 파일 닫기: close()

close() 메서드를 사용하여 파일을 닫고 자원을 해제합니다.

f = open("my_file.txt", "r")
# 파일 처리 코드
f.close()

with 문을 사용하면 파일을 자동으로 닫을 수 있습니다.

with open("my_file.txt", "r") as f:
    content = f.read()
    print(content)

6. 파일 입출력 활용 예시

6.1. 텍스트 파일 읽고 쓰기

with open("input.txt", "r") as input_file, open("output.txt", "w") as output_file:
    for line in input_file:
        output_file.write(line.upper())

6.2. CSV 파일 읽고 쓰기

import csv

with open("data.csv", "r") as csv_file:
    csv_reader = csv.reader(csv_file)
    for row in csv_reader:
        print(row)

with open("data.csv", "w", newline="") as csv_file:
    csv_writer = csv.writer(csv_file)
    csv_writer.writerow(["Name", "Age", "City"])
    csv_writer.writerow(["John", "30", "New York"])

7. 바이너리 파일 입출력

바이너리 파일은 텍스트 파일과 달리 데이터를 바이너리 형태로 저장합니다. 바이너리 파일을 다룰 때는 open() 함수의 mode 매개변수에 'b'를 추가합니다.

with open("image.jpg", "rb") as f:
    image_data = f.read()

with open("image_copy.jpg", "wb") as f:
    f.write(image_data)

8. 결론

파이썬 파일 입출력은 데이터를 영구적으로 저장하고 관리하는 데 필수적인 기능입니다. open(), read(), write(), close() 함수와 with 문을 활용하여 텍스트 파일, CSV 파일, 바이너리 파일 등 다양한 형식의 파일을 다루고, 효율적인 데이터 관리 시스템을 구축할 수 있습니다.

Top