본문 바로가기
Python/문법

[Python] 파이썬 파일 읽기와 파일 쓰기에 대해서

by 에파 2024. 8. 4.
728x90

파일 입출력은 데이터를 저장하고 불러오는 데 매우 중요한 역할을 합니다. 파이썬에서는 파일을 읽고 쓰는 작업을 쉽게 수행할 수 있는 내장 함수들을 제공합니다. 이번 글에서는 파일을 읽고 쓰는 기본 방법부터 다양한 파일 모드, 그리고 파일 처리에 유용한 팁까지 자세히 설명하겠습니다.

 

1. 파일 열기

파이썬에서 파일을 열기 위해서는 'open()' 함수를 사용합니다. 이 함수는 두 개의 주요 인자를 받습니다. 파일 경로와 파일 모드입니다.

파일 모드

  • 'r': 읽기 모드(기본값)
  • 'w': 쓰기 모드 (파일이 존재하지 않으면 새로 생성, 기존 파일이 있으면 내용을 지우고 새로 작성)
  • 'a': 추가 모드 (파일이 존재하지 않으면 새로 생성, 기존 파일이 있으면 내용을 추가)
  • 'b': 바이너리 모드 (이진 파일을 처리할 때 사용)
  • 't': 텍스트 모드 (텍스트 파일을 처리할 때 사용, 기본값)
  • 'r+': 읽기/쓰기 모드

파일 열기 예시

# 텍스트 파일 읽기 모드로 열기
file = open('example.txt', 'r')

# 텍스트 파일 쓰기 모드로 열기
file = open('example.txt', 'w')

 

2. 파일 읽기

파일을 읽는 방법에는 여러 가지가 있습니다. 대표적인 메서드로는 'read()', 'readline()', 'readlines()'가 있습니다.

'read()'

파일의 전체 내용을 문자열로 읽어옵니다.

 

file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()  # 파일 닫기

# 예시 출력:
# Hello, world!
# This is a file reading example.

'readline()'

파일의 한 줄을 읽어옵니다. 반복문과 함께 사용하여 파일의 모든 줄을 하나씩 처리할 수 있습니다.

 

file = open('example.txt', 'r')
line = file.readline()
while line:
    print(line.strip())  # 줄바꿈 제거
    line = file.readline()
file.close()  # 파일 닫기

# 예시 출력:
# Hello, world!
# This is a file reading example.

'readlines()'

파일의 모든 줄을 리스트로 읽어옵니다. 각 줄은 리스트의 한 요소가 됩니다.

 

file = open('example.txt', 'r')
lines = file.readlines()
for line in lines:
    print(line.strip())
file.close()  # 파일 닫기

# 예시 출력:
# Hello, world!
# This is a file reading example.

 

3. 파일 쓰기

파일에 데이터를 쓰는 방법에는 'write()'와 'writelines()' 메서드가 있습니다.

'write()'

문자열을 파일에 씁니다.

 

file = open('example.txt', 'w')
file.write("Hello, world!\n")
file.write("This is a file writing example.\n")
file.close()  # 파일 닫기

 

위 코드는 'example.txt' 파일에 두 줄의 문자열을 씁니다. 파일이 존재하지 않으면 새로 생성되고, 이미 존재하면 내용을 지우고 새로 작성합니다.

'writelines()'

리스트의 각 요소를 파일에 씁니다. 각 요소가 파일의 한 줄이 됩니다.

 

lines = ["Hello, world!\n", "This is a file writing example.\n"]

file = open('example.txt', 'w')
file.writelines(lines)
file.close()  # 파일 닫기

 

위 코드는 리스트의 각 문자열을 'example.txt' 파일에 씁니다.

 

4. 'with' 문 사용하기

'with' 문은 파일을 열고 작업을 수행한 후 자동으로 파일을 닫아주는 컨텍스트 매니저입니다. 이는 파일을 사용한 후에 'close()' 메서드를 호출하는 것을 잊지 않도록 해주며, 파일의 안전한 관리를 돕습니다.

 

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

# 예시 출력:
# Hello, world!
# This is a file reading example.

 

위 예제에서 'with' 문을 사용하면 파일이 자동으로 닫히므로, 파일을 수동으로 닫을 필요가 없습니다.

'with' 문을 사용하는 것과 사용하지 않는 것의 차이점

  • 리소스 관리: 'with' 문을 사용하면 파일이 자동으로 닫혀 리소스 누수를 방지할 수 있습니다.
  • 예외 처리: 'with' 문은 파일 사용 중 예외가 발생하더라도 자동으로 파일을 닫아주므로 안전합니다.
  • 가독성: 'with' 문을 사용하면 파일 입출력 코드를 더 간결하고 명확하게 작성할 수 있습니다.

 

5. 파일 모드 결합

파일 모드는 여러 개의 옵션을 결합하여 사용할 수 있습니다. 예를 들어, 바이너리 모드로 파일을 읽고 쓰려면 'rb', 'wb', 'ab' 모드를 사용할 수 있습니다.

 

# 바이너리 파일 읽기
with open('example.bin', 'rb') as file:
    binary_data = file.read()

# 바이너리 파일 쓰기
with open('example.bin', 'wb') as file:
    file.write(b'\x00\xFF\xAB\xCD')

 

6. 예외 처리

파일 작업 중에는 다양한 오류가 발생할 수 있습니다. 예외 처리를 통해 오류를 안전하게 처리할 수 있습니다.

 

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

 

위 코드는 파일이 존재하지 않거나 읽기 중 오류가 발생할 경우에 대한 예외 처리를 포함하고 있습니다.

 

 

 

파이썬의 파일 읽기와 쓰기에 대해서 소개했습니다. 'open()' 함수와 다양한 파일 모드를 통해 파일을 읽고 쓸 수 있으며, 'with' 문과 예외 처리를 통해 안전하게 파일을 관리할 수 있습니다. 'with' 문을 사용하면 코드가 간결해지고, 리소스를 자동으로 관리할 수 있어 파일 처리가 더욱 안전해집니다. 이상입니다.

댓글