Python을 배워보자/7. 파일 입출력

파이썬 파일 입출력 열기와 닫기

_Blue_Sky_ 2024. 9. 25. 18:40
728x90

파이썬 파일 입출력: 파일 열기와 닫기 심층 분석

서론

파이썬은 다양한 종류의 데이터를 처리하는 강력한 도구입니다. 특히, 파일 시스템과 상호 작용하는 기능은 데이터 분석, 웹 개발, 자동화 등 다양한 분야에서 필수적입니다. 이 글에서는 파이썬에서 파일을 어떻게 열고 닫는지, 그리고 각 모드의 특징과 활용 방법에 대해 자세히 알아보겠습니다.

파일 객체 생성: open() 함수

파이썬에서 파일을 다루기 위해서는 먼저 파일 객체를 생성해야 합니다. 파일 객체는 파일 시스템의 특정 파일을 가리키는 파이썬의 내장 객체입니다. 파일 객체를 생성하는 가장 일반적인 방법은 open() 함수를 사용하는 것입니다.

file_object = open("파일 이름", "모드")
 
  • 파일 이름: 열고자 하는 파일의 경로를 나타냅니다. 절대 경로 또는 상대 경로를 사용할 수 있습니다.
  • 모드: 파일을 어떤 목적으로 열 것인지를 나타냅니다. 다양한 모드가 있으며, 각 모드에 따라 파일 객체의 동작이 달라집니다.
728x90

파일 모드

  • 'r': 읽기 모드
    • 파일의 내용을 읽기 위해 사용합니다.
    • 파일이 존재하지 않으면 오류가 발생합니다.
  • 'w': 쓰기 모드
    • 파일을 새로 생성하거나 기존 파일의 내용을 모두 지우고 새로 쓰기 위해 사용합니다.
    • 파일이 존재하지 않으면 새 파일이 생성됩니다.
  • 'a': 추가 모드
    • 파일의 끝에 새로운 내용을 추가하기 위해 사용합니다.
    • 파일이 존재하지 않으면 새 파일이 생성됩니다.
  • 'x': 생성 모드
    • 파일이 존재하지 않을 때만 새 파일을 생성합니다. 파일이 이미 존재하면 오류가 발생합니다.
  • 'b': 바이너리 모드
    • 바이너리 데이터를 읽거나 쓰기 위해 사용합니다. 텍스트 파일이 아닌 이미지, 음악 파일 등을 다룰 때 사용합니다.
  • '+': 읽기/쓰기 모드
    • 파일을 읽고 쓰기 모두 할 수 있도록 합니다.

예시:

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

# 쓰기 모드로 파일 열기
f = open("new_file.txt", "w")

# 추가 모드로 파일 열기
f = open("log.txt", "a")
 

파일 닫기: close() 메소드

파일 작업을 마친 후에는 반드시 파일을 닫아주는 것이 중요합니다. 파일을 열어 놓은 상태에서는 시스템 자원이 계속 사용되기 때문에, 파일을 닫지 않으면 메모리 누수 등의 문제가 발생할 수 있습니다. 파일을 닫기 위해서는 파일 객체의 close() 메소드를 호출합니다.

f.close()
 

with 문을 사용한 파일 처리

with 문을 사용하면 파일을 열고 닫는 과정을 더욱 간편하게 처리할 수 있습니다. with 블록을 벗어나는 순간 자동으로 파일이 닫히기 때문에 close() 메소드를 호출할 필요가 없습니다.

with open("data.txt", "r") as f:
    # 파일에서 데이터 읽기
    data = f.read()
    print(data)
 

파일에서 데이터 읽기

  • read(): 파일 전체를 문자열로 읽어옵니다.
  • readline(): 파일에서 한 줄씩 읽어옵니다.
  • readlines(): 파일의 모든 줄을 리스트 형태로 읽어옵니다.
with open("data.txt", "r") as f:
    # 첫 번째 줄 읽기
    line = f.readline()
    print(line)

    # 모든 줄을 리스트로 읽기
    lines = f.readlines()
    for line in lines:
        print(line, end="")

파일에 데이터 쓰기

  • write(): 문자열을 파일에 씁니다.
with open("new_file.txt", "w") as f:
    f.write("Hello, world!\n")
 

파일의 위치 이동

  • seek(): 파일 내의 특정 위치로 커서를 이동합니다.
  • tell(): 현재 커서의 위치를 반환합니다.
with open("data.txt", "r") as f:
    f.seek(10)  # 10바이트 위치로 이동
    data = f.read(5)  # 5바이트 읽기
    print(data)
 

결론

파이썬의 파일 입출력은 다양한 데이터 처리 작업에 필수적인 기능입니다. open() 함수를 사용하여 파일 객체를 생성하고, 다양한 모드를 통해 파일을 읽고 쓰는 작업을 수행할 수 있습니다. with 문을 사용하면 파일을 안전하게 관리할 수 있으며, read(), readline(), readlines(), write(), seek(), tell() 등의 메소드를 활용하여 파일에서 데이터를 효율적으로 처리할 수 있습니다.

 

728x90