티스토리 뷰
목차
개발에 처음 발을 들여놓으면 기본적인 문법 외에도 파일 입출력이 중요한 기술 중 하나임을 느끼게 됩니다. 특히, 실제 프로젝트에서는 데이터 파일을 주고받으며 읽고 쓰는 작업이 빈번하게 일어나죠. 여러분들도 개발 업무를 수행하게 된다면 수많은 파일을 가지고 작업을 하게 될거예요. 저역시 지금까지 개발을 하면서 파일을 다뤄온 경험자로서 드리고 싶은 팁은, 기초적인 파일 입출력 개념만 확실히 이해해도 이후 더 복잡한 데이터 처리와 파일 관리를 훨씬 수월하게 할 수 있다는 점입니다. 처음엔 헷갈리더라도, Python의 간단한 문법을 통해 차근차근 익혀나가 보세요.
1. Python에서 파일 읽기와 쓰기의 기본 이해하기
Python에서 파일 읽기와 쓰기는 open() 함수와 함께 시작됩니다. open() 함수는 파일을 열고, 이후 파일 작업이 끝나면 파일을 닫아주는 작업이 필요합니다. 파일 모드와 파일을 닫는 방법에 대해 간단히 알아봅시다.
1.1 파일 모드 이해하기
Python에서 파일을 열 때는 파일 모드를 지정해야 합니다. 파일 모드는 파일을 어떻게 다룰지에 대한 설정을 나타내며, 대표적인 모드는 다음과 같습니다.
- "r": 읽기 모드 (기본값)
- "w": 쓰기 모드 (기존 내용 삭제 후 작성)
- "a": 추가 모드 (기존 내용에 덧붙여 작성)
- "r+": 읽기/쓰기 모드
1.2 파일 열기와 닫기
파일을 열고 나면 작업이 끝난 후 반드시 파일을 닫아야 합니다. 파일을 닫지 않으면 시스템 자원을 계속 점유하게 되므로, close() 메서드로 파일을 닫아주는 습관이 중요합니다.
# 파일 열기
file = open("example.txt", "w")
# 파일에 내용 쓰기
file.write("Hello, Python!")
# 파일 닫기
file.close()
1.3 with 구문으로 파일 다루기
파일을 열고 닫는 것을 자동으로 관리해주는 with 구문을 사용하는 것이 좋은 습관입니다. with 구문을 사용하면 파일을 자동으로 닫아줍니다.
with open("example.txt", "w") as file:
file.write("Hello, Python!")
2. 파일에 데이터 쓰기 – 쓰기 모드와 추가 모드
파일에 데이터를 쓰기 위해서는 "w"(쓰기 모드)와 "a"(추가 모드)를 사용할 수 있습니다. 이 모드에 따라 파일이 열리는 방식이 다르며, 기존 내용이 유지되거나 덮어씌워질 수 있습니다.
2.1 쓰기 모드("w")로 파일에 데이터 쓰기
쓰기 모드는 기존 파일 내용을 지우고 새로운 내용을 입력합니다. 아래 예제에서는 파일을 열고 텍스트 데이터를 작성하는 방법을 보여줍니다.
with open("write_example.txt", "w") as file:
file.write("Python 파일 쓰기 예제입니다.\n")
file.write("이 문장은 파일에 작성됩니다.")
출력 결과:
Python 파일 쓰기 예제입니다.
이 문장은 파일에 작성됩니다.
2.2 추가 모드("a")로 파일에 데이터 추가하기
추가 모드는 기존 파일의 내용을 유지하며 새로운 내용을 추가합니다. 파일의 마지막 부분에 새 내용이 덧붙여집니다.
with open("write_example.txt", "a") as file:
file.write("\n새로운 줄이 추가됩니다.")
출력 결과:
Python 파일 쓰기 예제입니다.
이 문장은 파일에 작성됩니다.
새로운 줄이 추가됩니다.
2.3 여러 줄 쓰기 (writelines() 함수)
리스트로 여러 줄의 텍스트를 만들고 writelines() 함수를 통해 한 번에 작성할 수도 있습니다.
lines = ["첫 번째 줄\n", "두 번째 줄\n", "세 번째 줄\n"]
with open("multiple_lines.txt", "w") as file:
file.writelines(lines)
3. 파일에서 데이터 읽기 – 다양한 파일 읽기 방법
파일에서 데이터를 읽는 방법은 여러 가지가 있습니다. 읽기 모드 "r"를 사용하며, 파일 전체를 읽거나 한 줄씩 읽는 방법 등이 있습니다.
3.1 read() 함수로 전체 내용 읽기
read() 함수는 파일의 전체 내용을 문자열로 읽어옵니다.
with open("write_example.txt", "r") as file:
content = file.read()
print(content)
출력 예시:
Python 파일 쓰기 예제입니다.
이 문장은 파일에 작성됩니다.
새로운 줄이 추가됩니다.
3.2 readline() 함수로 한 줄씩 읽기
readline() 함수는 파일에서 한 줄씩 읽습니다. 이를 통해 특정 줄만 처리하거나 한 줄씩 작업을 수행할 수 있습니다.
with open("write_example.txt", "r") as file:
line = file.readline()
while line:
print(line, end="")
line = file.readline()
3.3 readlines() 함수로 모든 줄 읽기
readlines() 함수는 파일의 모든 줄을 리스트로 반환합니다. 각 줄이 리스트의 요소로 저장되므로, 반복문을 통해 줄 단위로 처리할 수 있습니다.
with open("write_example.txt", "r") as file:
lines = file.readlines()
for line in lines:
print(line, end="")
4. 실습 예제: 파일 읽기와 쓰기 활용하기
이제 간단한 예제를 통해 파일 읽기와 쓰기를 실습해 보겠습니다. 사용자로부터 입력을 받아 파일에 저장하고, 저장된 파일 내용을 출력하는 예제입니다.
4.1 사용자 입력을 받아 파일에 저장하기
아래 코드는 사용자로부터 텍스트 입력을 받아 파일에 저장하는 예제입니다.
with open("user_input.txt", "w") as file:
while True:
text = input("파일에 저장할 내용을 입력하세요 (종료: 'exit'): ")
if text.lower() == 'exit':
break
file.write(text + "\n")
4.2 저장된 파일 내용 출력하기
위에서 저장한 user_input.txt 파일의 내용을 읽고 출력해 봅시다.
with open("user_input.txt", "r") as file:
content = file.read()
print("파일의 내용은 다음과 같습니다:")
print(content)
4.3 파일 존재 여부 확인하기
파일을 읽기 전에 파일이 실제로 존재하는지 확인하는 것이 좋습니다. Python에서는 os.path.exists() 함수를 통해 파일 존재 여부를 확인할 수 있습니다.
import os
if os.path.exists("user_input.txt"):
with open("user_input.txt", "r") as file:
print(file.read())
else:
print("파일이 존재하지 않습니다.")
5. 파일 다루기 시 주의할 점
파일을 다루다 보면 몇 가지 주의할 사항이 있습니다. 아래는 파일 입출력 시 유의해야 할 몇 가지 팁입니다.
5.1 파일을 열 때의 예외 처리
파일이 존재하지 않거나 열기에 문제가 생기면 오류가 발생할 수 있습니다. 예외 처리를 통해 오류를 잡아내는 것이 중요합니다.
try:
with open("nonexistent_file.txt", "r") as file:
print(file.read())
except FileNotFoundError:
print("파일이 존재하지 않습니다.")
5.2 절대 경로와 상대 경로 사용하기
파일 경로를 지정할 때, 프로그램이 실행되는 위치에 따라 경로가 다르게 해석될 수 있습니다. 절대 경로와 상대 경로를 적절히 사용하면 파일을 안정적으로 다룰 수 있습니다.
- 절대 경로: 파일의 전체 경로를 지정하는 방식
- 상대 경로: 현재 디렉토리를 기준으로 파일 경로를 지정하는 방식
요약
Python에서 파일 읽기와 쓰기는 데이터 처리를 위한 중요한 기능입니다. 이 글에서는 파일 모드, 읽기/쓰기 함수, 그리고 파일 다루기 실습 예제를 통해 파일 입출력을 이해하는 데 필요한 모든 내용을 다루었습니다.