반응형

파이썬 파일 입출력 (File I/O): 파일을 다루는 기초

이번 글에서는 파이썬에서 파일 입출력(File Input/Output)을 다루는 방법에 대해 알아보겠습니다. 파일 입출력은 데이터를 외부 파일에서 읽어오거나, 프로그램에서 처리한 결과를 파일에 저장하는 데 필수적인 기능입니다. 파이썬에서는 파일을 쉽게 열고, 읽고, 쓰는 다양한 방법을 제공합니다.


1. 파일 열기 (open 함수)

파일을 사용하려면 먼저 open() 함수를 사용해 파일을 열어야 합니다. 이 함수는 파일 경로와 모드를 인자로 받아 파일 객체를 반환합니다.

기본 구조:

파일객체 = open(파일이름, 모드)

모드:

  • "r": 읽기 모드 (기본값) — 파일을 읽기만 할 때 사용.
  • "w": 쓰기 모드 — 파일에 데이터를 쓰며, 기존 파일이 있을 경우 내용을 덮어씀.
  • "a": 추가 모드 — 기존 파일이 있을 경우 내용 뒤에 데이터를 추가.
  • "b": 바이너리 모드 — 바이너리 파일(이미지, 영상 등)을 읽거나 쓸 때 사용. (예: "rb", "wb")

예시:

# 파일 읽기 모드로 열기
file = open("example.txt", "r")

 

2. 파일 닫기 (close 함수)

파일을 열었으면 작업이 끝난 후 반드시 close() 함수를 호출해 파일을 닫아야 합니다. 파일을 닫지 않으면 데이터가 손실될 수 있고, 리소스 누수가 발생할 수 있습니다.

file = open("example.txt", "r")
# 파일 작업
file.close()

파일을 자동으로 닫아주는 with 문을 사용하는 것이 좋습니다. with를 사용하면 블록이 끝나면 파일이 자동으로 닫힙니다.

with open("example.txt", "r") as file:
    # 파일 작업
    content = file.read()
 

 

3. 파일 읽기

파일에서 데이터를 읽는 방법에는 여러 가지가 있습니다. 파일 내용의 크기나 처리 방식에 따라 적절한 방법을 선택할 수 있습니다.

1) read() 함수

read() 함수는 파일 전체 내용을 하나의 문자열로 읽어옵니다.

with open("example.txt", "r") as file:
    content = file.read()
    print(content)
 

2) readline() 함수

readline() 함수는 파일에서 한 줄씩 읽어올 때 사용합니다. 큰 파일을 다룰 때 유용합니다.

with open("example.txt", "r") as file:
    line = file.readline()
    while line:
        print(line.strip())  # 줄 끝의 개행 문자 제거
        line = file.readline()

3) readlines() 함수

readlines() 함수는 파일 전체를 읽어 각 줄을 리스트로 반환합니다.

with open("example.txt", "r") as file:
    lines = file.readlines()
    for line in lines:
        print(line.strip())
 

 

4. 파일 쓰기

파일에 데이터를 쓸 때는 쓰기 모드("w") 또는 **추가 모드("a")**를 사용합니다.

1) write() 함수

write() 함수는 문자열 데이터를 파일에 씁니다. 기존 파일이 있을 경우 쓰기 모드는 파일 내용을 덮어쓰고, 추가 모드는 기존 내용 뒤에 데이터를 추가합니다.

# 쓰기 모드로 파일 열기
with open("output.txt", "w") as file:
    file.write("Hello, World!")
 

2) writelines() 함수

writelines() 함수는 리스트에 담긴 여러 줄의 문자열을 한 번에 파일에 씁니다.

lines = ["첫 번째 줄\n", "두 번째 줄\n", "세 번째 줄\n"]

with open("output.txt", "w") as file:
    file.writelines(lines)
 

 

5. 파일 모드와 예외 처리

파일을 다루다 보면 파일이 없거나, 파일을 쓰는 중에 오류가 발생할 수 있습니다. 이런 경우에 대비해 try-except를 사용해 예외 처리를 할 수 있습니다.

try:
    with open("non_existent_file.txt", "r") as file:
        content = file.read()
except FileNotFoundError:
    print("파일을 찾을 수 없습니다.")
except IOError:
    print("파일을 읽거나 쓰는 중에 오류가 발생했습니다.")
 

 

6. 바이너리 파일 읽기 및 쓰기

파이썬에서는 이미지나 동영상 같은 바이너리 파일도 읽고 쓸 수 있습니다. 이때는 파일 모드에 "b"를 추가합니다.

바이너리 파일 읽기 예시:

with open("image.jpg", "rb") as file:
    binary_data = file.read()

바이너리 파일 쓰기 예시:

with open("output.jpg", "wb") as file:
    file.write(binary_data)

 

7. 파일 존재 여부 확인하기

파일을 열기 전에 파일이 실제로 존재하는지 확인하는 것이 좋습니다. 이를 위해 os 모듈의 path.exists() 함수를 사용할 수 있습니다.

import os

if os.path.exists("example.txt"):
    with open("example.txt", "r") as file:
        content = file.read()
else:
    print("파일이 존재하지 않습니다.")

결론

파일 입출력은 데이터를 읽고 쓰는 데 필수적인 기능으로, 파이썬에서는 매우 간단하게 처리할 수 있습니다. open() 함수로 파일을 열고, 다양한 읽기/쓰기 방법을 통해 파일 데이터를 다룰 수 있습니다. 또한, with 문을 사용하면 파일을 자동으로 닫을 수 있어 더 안전하고 간결한 코드를 작성할 수 있습니다.

다음 글에서는 **객체지향 프로그래밍(OOP)**을 주제로, 파이썬에서 클래스와 객체를 사용해 코드를 구조화하는 방법을 살펴보겠습니다.

반응형

+ Recent posts