Python 파일 입출력 및 예외 처리 완벽 가이드

파일 열기

Python에서는 내장된 open() 함수를 사용하여 파일을 열 수 있습니다. 이 함수는 파일 객체를 생성하며, 이를 통해 파일을 읽거나 쓸 수 있습니다.

file_object = open(file_name, access_mode, buffering)

파라미터 설명

  • file_name: 읽거나 쓸 파일의 이름을 포함한 문자열입니다.
  • access_mode: 파일을 어떤 모드로 열지를決定합니다. 기본값은 읽기 전용(r)입니다.
  • buffering: 버퍼링 동작을 제어합니다. 0이면 버퍼링 없음, 1이면 줄 단위 버퍼링, 양수면 버퍼 크기, 음수면 시스템 기본값입니다.

파일 열기 모드一覧

모드설명
r읽기 전용으로 파일을 엽니다. 파일 포인터는 파일 시작 위치에 있습니다.
rb이진 읽기 전용으로 파일을 엽니다.
r+읽기와 쓰기가 가능한 파일을 엽니다.
rb+이진 형식으로 읽기와 쓰기가 가능한 파일을 엽니다.
w쓰기 전용으로 파일을 엽니다. 기존 파일이 있으면 덮어씁니다.
wb이진 쓰기 전용으로 파일을 엽니다.
w+읽기와 쓰기가 가능한 파일을 엽니다. 기존 파일이 있으면 덮어씁니다.
wb+이진 형식으로 읽기와 쓰기가 가능한 파일을 엽니다.
a추가 모드로 파일을 엽니다. 파일 포인터는 파일 끝에 있습니다.
ab이진 추가 모드로 파일을 엽니다.
a+읽기와 추가가 가능한 파일을 엽니다.
ab+이진 형식으로 읽기와 추가가 가능한 파일을 엽니다.

파일 닫기

파일 객체의 close() 메서드는 버퍼에 남아 있는 모든 데이터를 쓰고 파일을 닫습니다. 파일을 닫은 후에는 더 이상 쓰기를 할 수 없습니다.

file_object.close()

예제:

# 파일 열기
target_file = open("sample.txt", "w")
print("파일 이름:", target_file.name)

# 파일 닫기
target_file.close()

파일 객체의 속성

속성설명
closed파일이 닫혀 있으면 True, 아니면 False를 반환합니다.
mode파일을 열 때 사용한 접근 모드를 반환합니다.
name파일의 이름을 반환합니다.
softspaceprint 문 사용 후 공백이 필요하면 False, 아니면 True를 반환합니다.

예제:

# 파일 열기
target_file = open("sample.txt", "w")
print("파일 이름:", target_file.name)
print("닫혔는지 여부:", target_file.closed)
print("열린 모드:", target_file.mode)
print("소프트스페이스 플래그:", target_file.softspace)
target_file.close()

파일 읽기

read() 메서드는 파일에서 지정한 바이트 수만큼 문자열을 읽어옵니다.

file_object.read(byte_count)

byte_count를 지정하지 않으면 파일 전체를 읽습니다.

예제:

# 파일 열기
input_file = open("/tmp/data.txt", "r")
content = input_file.read(15)
print("읽은 내용:", content)
input_file.close()

파일 쓰기

write() 메서드는 문자열을 파일에 씁니다. 자동으로 줄바꿈 문자가 추가되지 않으므로, 필요시 명시적으로 추가해야 합니다.

file_object.write(write_string)

예제:

# 파일 열기
output_file = open("/tmp/output.txt", "w")
output_file.write("Python은 강력한 프로그래밍 언어입니다.\n흥미롭군요!!\n")
output_file.close()

예외 처리基础

try/except 문

try/except 문을 사용하면 예외를 발생시킬 수 있는 코드를 감싸고, 예외 발생 시 적절히 처리할 수 있습니다. 프로그램을 중단하지 않고 오류를 처리할 수 있습니다.

try:
    # 실행할 코드
except 예외타입:
    # 예외 발생 시 실행할 코드
except 예외타입 as 변수:
    # 예외 정보와 함께 처리
else:
    # 예외가 발생하지 않았을 때 실행

예제:

try:
    file_handle = open("testfile.txt", "w")
    file_handle.write("예외 처리를 위한 테스트 파일입니다.")
except IOError:
    print("오류: 파일을 찾을 수 없거나 데이터를 읽을 수 없습니다.")
else:
    print("파일에 성공적으로 작성했습니다")
    file_handle.close()

try-finally 문

try-finally 문은 예외 발생 여부와 관계없이 항상 finally 블록의 코드를 실행합니다.

try:
    # 실행할 코드
finally:
    # 항상 실행되는 코드

예제:

try:
    file_handle = open("testfile.txt", "w")
    file_handle.write("예외 처리를 위한 테스트 파일입니다.")
finally:
    print("파일 처리 작업 완료")
    # 필요시 정리 작업 수행

참고: except와 finally는 함께 사용할 수 없으며, else와 finally도 함께 사용할 수 없습니다.

7월 25일 12:37에 게시됨