코딩/파이썬

[새싹 성동 2기] Python에서 파일 처리하는 방법

insu90 2024. 12. 9. 18:33

파이썬에서는 파일을 다루는 다양한 방법을 제공합니다. 파일을 열고 읽거나 쓰는 작업을 효율적으로 수행할 수 있으며, 예외 처리로 안전한 파일 작업도 가능합니다. 이번 글에서는 파이썬에서 파일을 처리하는 기본 문법과 주요 기능을 정리해 보겠습니다.

1. open() 함수의 기본 문법

파일을 열 때 사용하는 open() 함수는 다음과 같은 매개변수를 가집니다.

file_object = open(file_name, mode, buffering, encoding, errors, newline, closefd, opener)
  • file_name: 파일 이름
  • mode: 파일 모드(읽기, 쓰기, 추가 등)
  • encoding: 파일 인코딩(예: utf-8)
  • buffering: 버퍼 설정
  • errors: 오류 처리 방식
  • newline: 줄바꿈 문자 처리 방식

2. 파일 모드 (mode)

open() 함수의 mode 매개변수를 통해 파일 작업 방식을 지정합니다.

모드설명

r 읽기 전용 모드 (파일이 없으면 예외 발생)
w 쓰기 모드 (파일 내용 초기화 또는 새 파일 생성)
a 추가 모드 (파일 끝에 내용 추가)
x 배타적 생성 모드 (파일이 존재하면 예외 발생)
b 바이너리 모드 (텍스트 대신 바이너리 처리)
t 텍스트 모드 (기본값)
+ 읽기와 쓰기 모두 가능
# 읽기 모드로 파일 열기
file = open('example.txt', 'r')

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

# 추가 모드로 파일 열기
file = open('example.txt', 'a')

# 바이너리 읽기 모드로 파일 열기
file = open('example.jpg', 'rb')

# 바이너리 쓰기 모드로 파일 열기
file = open('example.jpg', 'wb')

# 읽기 및 쓰기 모드로 파일 열기
file = open('example.txt', 'r+')

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

# 바이너리 읽기 및 쓰기 모드로 파일 열기
file = open('example.jpg', 'r+b')

3. with open 구문

with open 구문은 파일 작업 후 자동으로 파일을 닫아줍니다.

with open('example.txt', 'r', encoding='utf-8') as file:
    content = file.read()
    print(content)
    
    
# 파일 여는 과정에서 예외처리
    try:
    with open('example.txt', 'r') as file:
        content = file.read()
        print(content)
except FileNotFoundError:
    print('파일이 존재하지 않습니다.')
except PermissionError:
    print('파일을 열 권한이 없습니다.')
except Exception as e:
    print(f'예상치 못한 오류가 발생했습니다: {e}')

 

4. 파일 읽기

(1) 전체 읽기

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

(2) 특정 크기만큼 읽기

with open("example.txt", "r", encoding="utf-8") as file:
    content = file.read(10)  # 처음 10글자 읽기
    print(content)

(3) 한 줄씩 읽기

with open("example.txt", "r", encoding="utf-8") as file:
    line = file.readline()
    while line:
        print(line, end="")  # 줄바꿈 방지
        line = file.readline()

(4) 모든 줄을 리스트로 읽기

with open("example.txt", "r", encoding="utf-8") as file:
    lines = file.readlines()
    for line in lines:
        print(line, end="")

5. 파일 쓰기

(1) 파일 초기화 후 쓰기

with open("example.txt", "w", encoding="utf-8") as file:
    file.write("Hello, World!\n")
    file.write("This is a test file.\n")

(2) 리스트 데이터 쓰기

 
lines = ["첫번째 라인\n", "두번째 라인\n"]
with open("example.txt", "w", encoding="utf-8") as file:
    file.writelines(lines)

(3) 파일 끝에 내용 추가

 
with open("example.txt", "a", encoding="utf-8") as file:
    file.write("추가된 내용입니다.\n")

6. 파일 닫기

파일 작업 후 반드시 닫아야 합니다. 하지만 with open 구문을 사용하면 자동으로 닫히므로 권장됩니다.

file = open('example.txt', 'w', encoding='utf-8')
try:
    file.write('Hello, World!\n')
finally:
    file.close()  # 명시적으로 파일 닫기

7. 파일 작업 중 예외 처리

파일 작업 시 예상치 못한 오류를 방지하기 위해 예외 처리를 추가할 수 있습니다.

try:
    with open('example.txt', 'r', encoding='utf-8') as file:
        content = file.read()
        print(content)
except FileNotFoundError:
    print('파일이 존재하지 않습니다.')
except PermissionError:
    print('파일에 접근할 권한이 없습니다.')
except Exception as e:
    print(f'예상치 못한 오류가 발생했습니다: {e}')

8. 파일 작업 예제: 간단한 파일 처리

(1) 파일 읽기

with open("example.txt", "r", encoding="utf-8") as file:
    print(file.read())

(2) 파일 쓰기 및 추가

with open("example.txt", "w", encoding="utf-8") as file:
    file.write("새로운 내용 작성\n")

with open("example.txt", "a", encoding="utf-8") as file:
    file.write("내용 추가\n")

 

 

파일 처리는 프로그래밍에서 중요한 부분을 차지합니다. 파이썬의 open() 함수와 with open 구문을 통해 효율적이고 안전한 파일 작업을 수행해 보세요. 추가적으로 예외 처리를 통해 오류를 예방하면 더욱 안정적인 프로그램을 만들 수 있습니다.