서론
파일 입출력은 대부분의 프로그래밍 언어에서 필수적인 요소이며, 데이터를 영구적으로 저장하거나 외부의 데이터를 프로그램에 반입하는 데 사용됩니다. 파이썬에서는 이러한 파일 입출력 작업을 매우 쉽게 수행할 수 있는 강력하고 직관적인 기능을 제공합니다. 이번 강좌에서는 파이썬을 사용하여 파일을 읽고 쓰는 방법을 자세히 설명하도록 하겠습니다.
파일 열기와 닫기
파일 작업을 하기 위해 가장 먼저 해야 할 일은 파이썬에서 파일을 여는 것입니다. 파일을 열기 위해서는 내장 함수인 open()
을 사용합니다. open()
함수는 파일 이름과 파일 열기 모드를 매개변수로 받아들입니다.
file_object = open("example.txt", "r") # 읽기 모드로 파일 열기
파일을 사용한 후에는 꼭 닫아줘야 합니다. 이를 통해 시스템 자원이 해제되고, 데이터 손상을 방지할 수 있습니다. 파일 닫기는 close()
메서드를 통해 수행할 수 있습니다.
file_object.close()
파일 열기 모드
파일을 열 때 파일의 용도에 따라 다양한 모드를 사용할 수 있습니다. 주요 파일 열기 모드들은 다음과 같습니다:
'r'
: 읽기 모드. 파일의 내용을 읽기 위해 사용합니다. 파일이 존재해야 합니다.'w'
: 쓰기 모드. 파일에 내용을 쓰기 위해 사용합니다. 파일이 존재하지 않으면 새로 생성되고, 기존 파일이 존재하면 해당 파일의 내용이 모두 삭제됩니다.'a'
: 추가 모드. 파일 끝에 내용을 덧붙이기 위해 사용합니다. 파일이 존재하지 않으면 새로 생성됩니다.'b'
: 바이너리 모드. 파일을 바이너리로 처리할 때 사용됩니다. 예를 들어, ‘rb’는 바이너리 읽기 모드입니다.'t'
: 텍스트 모드. 기본값이며, 텍스트 파일로 처리합니다.'x'
: 배타적 생성 모드. 파일이 존재하지 않을 때 새 파일을 생성합니다. 파일이 이미 존재하면 오류가 발생합니다.
파일 읽기
파일을 읽는 작업은 주로 read()
, readline()
, readlines()
메서드를 통해 이루어집니다. 파일 크기와 형식에 따라 적절한 메서드를 선택하여 사용할 수 있습니다.
read() 메서드
read()
메서드는 파일의 내용을 문자열로 읽어들입니다. 전체 파일 내용을 한 번에 읽거나, 읽을 바이트 수를 지정할 수 있으며, 읽기 작업 후에는 파일 포인터가 파일 끝에 위치하게 됩니다.
with open("example.txt", "r") as file:
content = file.read()
print(content)
readline() 메서드
readline()
메서드는 한 줄씩 읽어들일 때 유용합니다. 줄 끝의 개행 문자는 포함되어 있으며, 읽기 작업 후에는 파일 포인터가 다음 줄로 이동합니다.
with open("example.txt", "r") as file:
line = file.readline()
while line:
print(line, end='')
line = file.readline()
readlines() 메서드
readlines()
메서드는 파일의 모든 줄을 읽어 리스트로 반환합니다. 각 줄은 리스트의 개별 요소로 처리됩니다.
with open("example.txt", "r") as file:
lines = file.readlines()
for line in lines:
print(line, end='')
파일 쓰기
파일에 내용을 쓰는 작업은 write()
와 writelines()
메서드를 통해 이루어집니다. 파일에 데이터를 기록하는 다양한 방법을 제공하여 유연하게 사용할 수 있습니다.
write() 메서드
write()
메서드는 문자열 데이터를 파일에 기록합니다. 데이터를 기록한 후에는 반드시 flush()
를 호출하거나 파일을 닫아야 실제로 데이터가 기록됩니다.
with open("example.txt", "w") as file:
file.write("Hello, World!")
writelines() 메서드
writelines()
메서드는 문자열 리스트를 받아 파일에 기록합니다. 각 문자열은 기존 줄 끝에 이어져 기록되므로 각 줄 끝에 개행 문자를 명시적으로 추가해야 할 수도 있습니다.
with open("example.txt", "w") as file:
lines = ["Line 1\n", "Line 2\n", "Line 3\n"]
file.writelines(lines)
파일 처리 예외 관리
파일 작업은 다양한 오류가 발생할 수 있으므로, 예외 처리를 통해 오류를 효과적으로 처리하는 것이 중요합니다. 파이썬의 try
…except
구문을 사용하여 예외를 관리할 수 있으며, 이를 통해 파일 없음, 읽기 오류 등의 예외를 처리할 수 있습니다.
try:
with open("example.txt", "r") as file:
content = file.read()
print(content)
except FileNotFoundError:
print("파일이 존재하지 않습니다.")
except Exception as e:
print(f"예외가 발생했습니다: {e}")
결론
이번 강좌에서는 파이썬에서 파일을 읽고 쓰는 기본적인 방법과 주요 메서드, 그리고 파일 처리 시 예외 관리를 다루었습니다. 파일 입출력은 응용 프로그램의 데이터를 외부와 주고받고 저장하는 데 필수적인 기능입니다. 다양한 파일 입출력 방식과 적절한 예외 관리를 통해 파이썬 프로그램을 더욱 견고하게 작성할 수 있습니다.