학습 목표
이번 강의에서는 파이썬에서 파일 입출력(File I/O) 방법을 배우고, 데이터를 파일에 읽고 쓰는 기본적인 방법을 익힙니다. 파일을 통해 데이터를 영구적으로 저장하고, 필요할 때 이를 읽어올 수 있는 능력을 기를 것입니다.
개념 설명
파일 입출력은 파일을 열고 내용을 읽거나 수정하는 과정을 포함합니다. 파이썬에서는 'open()' 함수를 사용하여 파일을 열며, 파일 모드(읽기, 쓰기, 추가 등)를 지정할 수 있습니다. 읽기 모드('r')로 파일을 열면 기존 데이터를 읽을 수 있으며, 쓰기 모드('w')는 기존 파일의 내용을 덮어쓰고 새로운 내용을 쓸 수 있습니다. 추가 모드('a')는 기존 파일의 끝에 데이터를 추가합니다. 파일 작업 후에는 항상 'close()' 메서드를 사용하여 파일을 닫는 것이 좋습니다.
예제 코드
# 파일 쓰기 예제
def write_to_file(filename, data):
"""주어진 데이터 리스트를 파일에 저장하는 함수"""
with open(filename, 'w') as file:
for line in data:
file.write(line + '\n') # 각 데이터 뒤에 줄바꿈 추가
# 파일 읽기 예제
def read_from_file(filename):
"""파일에서 내용을 읽어오는 함수"""
with open(filename, 'r') as file:
contents = file.readlines() # 파일의 모든 줄을 읽음
return [line.strip() for line in contents] # 줄바꿈 제거
# 사용 예제
data_to_write = ["안녕하세요", "파이썬 파일 입출력 학습", "작성자: 학생"]
filename = 'output.txt'
write_to_file(filename, data_to_write) # 파일에 데이터 쓰기
print("파일에서 읽은 내용:")
read_contents = read_from_file(filename)
for line in read_contents:
print(line) # 파일에서 읽어온 내용 출력
코드 설명
이 코드는 파일에 데이터를 쓰고 읽는 방법을 보여주는 예제입니다. 'write_to_file' 함수는 주어진 리스트 데이터를 특정 파일에 저장하며, 각 데이터 사이에 줄바꿈('\n')을 추가하여 파일을 작성합니다. 'read_from_file' 함수는 파일에서 모든 줄을 읽어와 리스트로 반환하며, 각 줄의 줄바꿈을 제거합니다. 마지막으로 사용 예제를 통해 데이터를 파일에 저장하고, 저장한 내용을 다시 읽어 출력합니다.
연습 문제
1. 사용자로부터 5개의 문장을 입력받아 파일에 저장하는 프로그램을 작성해 보세요.
2. 저장된 파일에서 문장을 읽고, 각 문장의 길이와 내용을 출력하는 프로그램을 작성해 보세요.
연습 문제 해답
# 1번 문제: 사용자로부터 문장 입력받아 파일에 저장
def save_sentences_to_file(filename):
sentences = []
for _ in range(5):
sentence = input("문장을 입력하세요: ")
sentences.append(sentence)
write_to_file(filename, sentences) # 위에서 정의한 함수 사용
filename = 'sentences.txt'
save_sentences_to_file(filename)
# 2번 문제: 저장된 파일에서 문장 읽고 길이 출력
def display_sentences_length(filename):
sentences = read_from_file(filename) # 위에서 정의한 함수 사용
for sentence in sentences:
print(f"문장: {sentence}, 길이: {len(sentence)}") # 문장과 길이 출력
print("\n저장된 문장 및 길이:")
display_sentences_length(filename)
### 설명
- **파일 쓰기**: `open()` 함수를 사용하여 파일을 생성하고, `write()` 메서드를 통해 데이터를 기록합니다.
- **파일 읽기**: 파일의 줄을 읽어 리스트 형태로 반환하며, 각 줄의 비어있는 부분을 제거합니다.
- 그래픽 사용자 인터페이스를 제공하지 않지만, 명령줄을 통해 사용자로부터 입력을 받고 처리하는 방법을 보여줍니다.
- **연습 문제**를 통해 사용자가 직접 입력한 데이터를 파일로 저장하고, 그를 다시 읽어와서 처리하는 과정을 실습할 수 있습니다.
0 댓글