1. 기초 파이썬 예시 코드 (5개)
파일을 열고, 쓰고, 읽는 가장 기본적인 방법을 익힙니다.
1) 새 파일 생성 및 내용 쓰기 ('w' 모드)
# 'w' 모드는 파일이 없으면 새로 생성하고, 있으면 기존 내용을 덮어씁니다.
# with 구문은 파일 사용이 끝나면 자동으로 닫아줍니다.
with open('hello.txt', 'w', encoding='utf-8') as f:
f.write("안녕하세요, 파일 입출력의 세계에 오신 것을 환영합니다.\n")
f.write("이것은 두 번째 줄입니다.")
print("hello.txt 파일이 생성되고 내용이 작성되었습니다.")
2) 파일 내용 전체 읽기 ('r' 모드)
# 'r' 모드로 파일의 전체 내용을 하나의 문자열로 읽어옵니다.
try:
with open('hello.txt', 'r', encoding='utf-8') as f:
content = f.read()
print("--- 파일 내용 ---")
print(content)
except FileNotFoundError:
print("파일을 찾을 수 없습니다. 먼저 파일을 생성해 주세요.")
3) 파일을 한 줄씩 읽기 (readlines)
# 파일의 각 줄을 요소로 하는 리스트를 반환합니다.
with open('hello.txt', 'r', encoding='utf-8') as f:
lines = f.readlines()
for index, line in enumerate(lines):
print(f"{index + 1}번째 줄: {line.strip()}") # strip()으로 줄바꿈 제거
4) 기존 파일에 내용 추가하기 ('a' 모드)
# 'a' (append) 모드는 기존 내용을 보존하면서 맨 뒤에 내용을 덧붙입니다.
with open('hello.txt', 'a', encoding='utf-8') as f:
f.write("\n새로운 줄이 추가되었습니다.")
print("내용 추가가 완료되었습니다.")
5) 반복문을 이용해 한 줄씩 읽기
# 메모리 효율을 위해 대용량 파일은 이 방식을 권장합니다.
with open('hello.txt', 'r', encoding='utf-8') as f:
print("--- 반복문으로 읽기 ---")
for line in f:
print(line.end="") # 이미 줄바꿈이 포함되어 있으므로 end="" 처리
2. 응용 파이썬 예시 코드 (4개)
실무에서 활용 가능한 예외 처리 및 바이너리 파일 복사 기법을 다룹니다.
1) 사용자 입력을 파일로 저장하기
filename = 'user_data.txt'
print(f"'{filename}'에 저장할 내용을 입력하세요. '그만'을 입력하면 종료됩니다.")
with open(filename, 'w', encoding='utf-8') as f:
while True:
user_input = input("> ")
if user_input == '그만':
break
f.write(user_input + "\n")
print(f"내용이 '{filename}'에 성공적으로 저장되었습니다.")
2) 파일 존재 여부 확인 후 처리
# os 모듈을 사용하여 안전하게 파일에 접근합니다.
import os
target_file = 'important_note.txt'
if os.path.exists(target_file):
with open(target_file, 'r', encoding='utf-8') as f:
print(f"파일 내용: {f.read()}")
else:
print(f"'{target_file}' 파일이 존재하지 않습니다. 새로 생성합니다.")
with open(target_file, 'w', encoding='utf-8') as f:
f.write("이것은 중요한 메모입니다.")
3) 이미지 파일 복사 (바이너리 모드 'rb', 'wb')
# 텍스트가 아닌 파일은 'b'를 붙여 바이너리 모드로 처리해야 합니다.
# 준비물: 'source_image.jpg'라는 이미지 파일이 같은 경로에 있어야 합니다.
source_image = 'source_image.jpg'
dest_image = 'copied_image.jpg'
try:
with open(source_image, 'rb') as f_in:
with open(dest_image, 'wb') as f_out:
# 파일 내용을 읽어서 그대로 씁니다.
f_out.write(f_in.read())
print(f"이미지 파일 복사 완료: '{dest_image}'")
except FileNotFoundError:
print(f"'{source_image}' 파일을 찾을 수 없습니다.")
4) 특정 위치에서 읽고 쓰기 (seek, tell)
# seek()은 커서 이동, tell()은 현재 커서 위치를 반환합니다.
with open('seek_test.txt', 'w', encoding='utf-8') as f:
f.write("0123456789abcdef")
with open('seek_test.txt', 'r+', encoding='utf-8') as f:
f.seek(10) # 10번 인덱스 위치로 커서 이동
data = f.read(4) # 4글자 읽기
print(f"10번 위치에서 읽은 데이터: {data}") # 출력: abcd
print(f"현재 커서 위치: {f.tell()}") # 출력: 14
f.seek(0) # 파일의 맨 처음으로 이동
f.write("Hello") # '01234' 부분이 'Hello'로 덮어씌워짐
3. 심화 파이썬 예시 코드 (1개)
1) 파일 내 특정 단어 치환하기
# 파일을 읽어 내용을 수정한 후 다시 저장하는 전형적인 텍스트 처리 로직입니다.
def replace_in_file(filename, old_word, new_word):
"""파일 내의 특정 단어를 찾아 새 단어로 바꿉니다."""
try:
# 1. 파일 읽기
with open(filename, 'r', encoding='utf-8') as f:
content = f.read()
# 2. 내용 수정 (홍길동 -> 인수샘 등으로 변경)
new_content = content.replace(old_word, new_word)
# 3. 파일 다시 쓰기
with open(filename, 'w', encoding='utf-8') as f:
f.write(new_content)
print(f"'{old_word}'가 '{new_word}'로 변경되었습니다.")
except FileNotFoundError:
print("파일이 없습니다.")
# 예제 실행 (hello.txt 파일 내용 수정)
replace_in_file('hello.txt', '홍길동', '인수샘')