파이썬으로 memo.txt 파일을 만들고, 그 파일에 내용을 쓰고, 읽고, 내용을 추가(수정의 한 형태)하고, 마지막으로 파일을 삭제하는 아주 쉽고 간단한 예제를 만들어 드릴게요.
각 단계별로 코드를 보여드리고 설명하겠습니다.
Python
import os # 파일을 삭제하거나 파일 존재 여부를 확인하기 위해 필요한 모듈입니다.
# 사용할 파일 이름 정의
filename = "memo.txt"
# --- 1. 파일에 내용 쓰기 (새 파일 생성 또는 덮어쓰기) ---
print(f"\n--- 1. '{filename}' 파일에 새 메모 작성하기 ---")
try:
# 'w' 모드는 파일을 쓰기 모드로 열고, 파일이 이미 존재하면 내용을 덮어씁니다.
# 파일이 없으면 새로 만듭니다.
# encoding='utf-8'은 한글을 포함한 다양한 문자를 문제없이 처리하기 위함입니다.
with open(filename, 'w', encoding='utf-8') as file:
file.write("안녕하세요!\n")
file.write("파이썬으로 파일 처리를 하고 있어요.\n")
file.write(f"오늘은 2025년 5월 14일입니다.\n") # 예시 날짜
file.write("첫 번째 메모 끝!\n")
print(f"'{filename}' 파일에 내용을 성공적으로 작성했습니다.")
except IOError as e:
print(f"파일 쓰기 중 오류가 발생했습니다: {e}")
# --- 2. 파일 내용 읽기 ---
print(f"\n--- 2. '{filename}' 파일 내용 전체 읽기 ---")
try:
# 'r' 모드는 파일을 읽기 모드로 엽니다.
with open(filename, 'r', encoding='utf-8') as file:
content = file.read() # 파일의 전체 내용을 하나의 문자열로 읽어옵니다.
print(f"\n'{filename}' 파일의 내용:")
print("------------------------------------")
print(content.strip()) # strip()은 앞뒤 공백/줄바꿈 제거
print("------------------------------------")
print("파일 읽기를 완료했습니다.")
except FileNotFoundError:
print(f"'{filename}' 파일을 찾을 수 없습니다. 먼저 파일을 작성해주세요.")
except IOError as e:
print(f"파일 읽기 중 오류가 발생했습니다: {e}")
# --- 3. 파일에 내용 추가하기 (수정의 한 방법) ---
# 기존 내용 끝에 새로운 내용을 이어 쓰는 방식입니다.
print(f"\n--- 3. '{filename}' 파일에 내용 추가하기 (이어쓰기) ---")
try:
# 'a' 모드는 파일을 추가 모드로 엽니다.
# 파일이 존재하면 파일의 끝에 내용을 추가하고, 파일이 없으면 새로 만듭니다.
with open(filename, 'a', encoding='utf-8') as file:
file.write("\n--- 추가된 메모 --- \n")
file.write("이 내용은 기존 메모 뒤에 추가됩니다.\n")
file.write("파일 수정(추가)도 간단하네요!\n")
print(f"'{filename}' 파일에 내용을 성공적으로 추가했습니다.")
# 내용이 잘 추가되었는지 다시 한번 읽어서 확인해봅시다.
print(f"\n--- 내용 추가 후 '{filename}' 파일 다시 읽기 ---")
with open(filename, 'r', encoding='utf-8') as file:
updated_content = file.read()
print(f"\n'{filename}' 파일의 업데이트된 내용:")
print("------------------------------------")
print(updated_content.strip())
print("------------------------------------")
print("파일 재확인 완료.")
except FileNotFoundError:
print(f"'{filename}' 파일을 찾을 수 없습니다. 내용을 추가하려면 파일이 존재해야 합니다.")
except IOError as e:
print(f"파일에 내용 추가 중 오류가 발생했습니다: {e}")
# 참고: 파일의 특정 부분을 "수정"하는 것은 조금 더 복잡합니다.
# 보통은 파일 전체를 읽어서 메모리에서 수정한 다음, 파일 전체를 다시 쓰는 방식을 사용합니다.
# 이 예제에서는 가장 간단한 "이어쓰기"로 수정의 한 형태를 보여드렸습니다.
# --- 4. 파일 삭제하기 ---
print(f"\n--- 4. '{filename}' 파일 삭제하기 ---")
try:
# os.path.exists(filename) 으로 파일이 실제로 존재하는지 먼저 확인합니다.
if os.path.exists(filename):
os.remove(filename) # os.remove() 함수로 파일을 삭제합니다.
print(f"'{filename}' 파일을 성공적으로 삭제했습니다.")
else:
print(f"'{filename}' 파일이 이미 존재하지 않습니다 (삭제할 수 없음).")
except OSError as e: # os.remove() 실행 중 발생할 수 있는 오류 (예: 권한 문제)
print(f"파일 삭제 중 오류가 발생했습니다: {e}")
# 삭제 후 파일이 정말 없는지 다시 한번 확인
print(f"\n--- 삭제 후 '{filename}' 파일 존재 여부 확인 ---")
if os.path.exists(filename):
print(f"'{filename}' 파일이 여전히 존재합니다. (삭제 실패)")
else:
print(f"'{filename}' 파일이 존재하지 않습니다. (성공적으로 삭제됨)")
코드 설명:
- import os: 파일 시스템과 관련된 작업을 하기 위해 os 모듈을 가져옵니다. 파일 삭제나 파일 존재 여부 확인에 사용됩니다.
- filename = "memo.txt": 우리가 작업할 파일의 이름을 변수에 저장해두면 편리합니다.
- 파일 쓰기 ('w' 모드):
- with open(filename, 'w', encoding='utf-8') as file::
- open() 함수로 파일을 엽니다.
- 'w'는 쓰기(write) 모드를 의미합니다. 파일이 이미 있다면 그 내용을 모두 지우고 새로 씁니다. 파일이 없다면 새로 만듭니다.
- encoding='utf-8'은 한글이나 다른 특수 문자들을 올바르게 저장하고 읽기 위해 지정합니다.
- with ... as file: 구문은 파일을 사용한 후 자동으로 닫아주기 때문에 안전하고 편리합니다. file은 열린 파일 객체를 가리키는 변수입니다.
- file.write("내용\n"): 파일에 문자열을 씁니다. \n은 줄바꿈을 의미합니다.
- with open(filename, 'w', encoding='utf-8') as file::
- 파일 읽기 ('r' 모드):
- with open(filename, 'r', encoding='utf-8') as file::
- 'r'은 읽기(read) 모드를 의미합니다. 파일이 존재하지 않으면 FileNotFoundError 예외가 발생합니다.
- content = file.read(): 파일의 전체 내용을 하나의 문자열로 읽어와 content 변수에 저장합니다. (파일이 매우 크면 file.readline()이나 for line in file: 처럼 한 줄씩 읽는 방법도 있습니다.)
- with open(filename, 'r', encoding='utf-8') as file::
- 파일에 내용 추가하기 ('a' 모드):
- with open(filename, 'a', encoding='utf-8') as file::
- 'a'는 추가(append) 모드를 의미합니다. 파일이 존재하면 파일의 맨 끝에 새로운 내용을 추가합니다. 파일이 없다면 'w' 모드처럼 새로 만듭니다. 기존 내용은 지워지지 않습니다.
- 이것이 "수정"의 가장 간단한 형태 중 하나입니다. 기존 내용을 유지하면서 정보를 덧붙이는 것이죠.
- with open(filename, 'a', encoding='utf-8') as file::
- 파일 삭제하기:
- if os.path.exists(filename):: os.path.exists() 함수는 해당 경로에 파일이나 폴더가 존재하는지 확인하여 True 또는 False를 반환합니다. 삭제하기 전에 파일이 있는지 확인하는 것이 좋습니다.
- os.remove(filename): os 모듈의 remove() 함수를 사용하여 지정된 파일을 삭제합니다. 파일이 없거나 권한이 없으면 오류가 발생할 수 있습니다.
- try...except 블록:
- 파일 입출력 작업 중에는 여러 가지 오류(예: 파일을 찾을 수 없음, 디스크 공간 부족, 권한 없음 등)가 발생할 수 있습니다. try...except 블록을 사용하면 이런 오류가 발생했을 때 프로그램이 비정상적으로 종료되는 것을 막고 적절히 대처할 수 있습니다.
이 예제를 실행하면 memo.txt 파일이 생성되었다가 내용이 쓰이고, 읽히고, 추가된 후 마지막에는 삭제될 것입니다. 각 단계마다 터미널에 진행 상황이 출력됩니다.
'Python' 카테고리의 다른 글
pip란 무엇인가? (0) | 2025.05.19 |
---|---|
파이썬 파일 CRUD 예제(memo.txt 파일 처리) (0) | 2025.05.14 |
파이썬 예외 처리 (0) | 2025.05.14 |
파이썬 다형성이 뭐였지? (0) | 2025.05.14 |
파이썬 다형성 예제 (1) | 2025.05.14 |