728x90
Python은 파일을 읽고 쓰는 작업을 매우 간단하게 처리할 수 있습니다.
이번 글에서는 파일 처리의 기본 개념을 배우고, 이를 활용해 간단한 메모장 프로그램을 만들어 보겠습니다.
1. Python의 파일 처리 기본 개념
Python에서 파일을 다룰 때는 open() 함수를 사용합니다. 파일을 열 때는 모드를 지정해야 하며, 모드에 따라 파일을 읽거나 쓰는 방식이 달라집니다.
파일 모드 설명
- r (read): 읽기 전용 모드. 파일이 존재하지 않으면 오류가 발생합니다.
- w (write): 쓰기 전용 모드. 파일이 존재하면 내용을 덮어쓰고, 없으면 새로 만듭니다.
- a (append): 추가 모드. 파일이 존재하면 끝에 내용을 추가하고, 없으면 새로 만듭니다.
2. with 구문
Python에서는 파일을 다룰 때 with 구문을 사용하는 것이 일반적입니다. with 구문은 파일을 열고 작업이 끝난 후 자동으로 파일을 닫아주는 역할을 합니다. with 구문을 사용하면 실수로 파일을 닫지 않아 발생할 수 있는 문제를 방지할 수 있습니다.
with 구문의 장점
- 자동 자원 관리: 파일을 닫는 작업(close())을 명시적으로 하지 않아도 됩니다.
- 코드 가독성 향상: 파일 처리와 관련된 코드가 블록으로 묶여 있어 가독성이 높습니다.
예제: with 구문 사용
# sample.txt 파일 읽기
with open("sample.txt", "r") as file:
content = file.read()
print(content)
# 파일은 작업이 끝난 후 자동으로 닫힙니다.
예제: with 구문 없이 파일 열기
# sample.txt 파일 읽기 (with 구문 미사용)
file = open("sample.txt", "r")
content = file.read()
print(content)
file.close() # 파일을 명시적으로 닫아야 합니다.
3. 간단한 메모장 프로그램 만들기
이제 배운 내용을 활용해 간단한 메모장 프로그램을 만들어 보겠습니다. 이 프로그램은 다음과 같은 기능을 제공합니다.
- 사용자가 입력한 메모를 파일에 저장
- 저장된 메모를 읽어 출력
- 프로그램 종료
memo_pad.py
import os # 파일 및 디렉토리 작업을 위한 모듈
# 메모장 프로그램
def memo_pad():
print("== 나만의 메모장 ==")
print("1. 메모 작성")
print("2. 메모 읽기")
print("3. 종료")
while True:
choice = input("원하는 작업을 선택하세요 (1/2/3): ")
if choice == "1":
# 메모 작성
title = input("메모의 제목을 입력하세요: ")
filename = title.replace(" ", "_") + ".txt" # 파일명 생성 (공백을 '_'로 대체)
content = input("메모 내용을 입력하세요: ")
with open(filename, "w") as file: # 쓰기 모드로 파일 열기
file.write(content)
print(f"'{title}' 제목의 메모가 저장되었습니다.\n")
elif choice == "2":
# 메모 읽기
files = [f for f in os.listdir() if f.endswith(".txt")] # 현재 디렉토리에서 .txt 파일 목록 가져오기
if not files:
print("저장된 메모가 없습니다. 먼저 메모를 작성해보세요.\n")
continue
print("\n저장된 메모 목록:")
for idx, file in enumerate(files, start=1):
print(f"{idx}. {file.replace('_', ' ').replace('.txt', '')}") # 파일명에서 '_'와 '.txt' 제거 후 출력
try:
file_choice = int(input("읽고 싶은 메모의 번호를 입력하세요: "))
if 1 <= file_choice <= len(files):
selected_file = files[file_choice - 1]
with open(selected_file, "r") as file:
print("\n메모 내용:")
print(file.read())
else:
print("잘못된 번호입니다. 다시 시도하세요.\n")
except ValueError:
print("숫자를 입력하세요.\n")
elif choice == "3":
# 종료
print("프로그램을 종료합니다.")
break
else:
print("잘못된 입력입니다. 다시 시도하세요.\n")
# 프로그램 실행
memo_pad()
'Python' 카테고리의 다른 글
[Python] 파일 자동 정리 프로그램 만들기 (0) | 2025.02.21 |
---|---|
[Python] smtplib로 이메일 발송하기 (0) | 2025.02.18 |
[Python] 판다스 (Pandas) 라이브러리 사용하여 데이터의 합계, 최대값, 평균, 비율 계산하기 (0) | 2024.11.01 |
[Python] 사이킷런(scikit-learn) 라이브러리를 활용하여 정규화 하기 Min-Max Scaling (0) | 2024.10.26 |
[Python] 판다스 (Pandas) 라이브러리 사용해서 csv 데이터 특정 칼럼에 문자열 추가하기 (0) | 2024.10.20 |