Chapter 8. 파일 처리

파일 처리(File Handling)는 프로그램에서 파일을 읽거나 저장하는 기능입니다. 프로그램이 종료되어도 데이터를 보관하려면 파일에 저장해야 합니다.
파이썬에서는 다양한 파일을 다룰 수 있으며, 가장 많이 사용하는 파일은 다음과 같습니다:
- TXT(텍스트 파일)
- CSV(쉼표로 구분된 데이터 파일)
- JSON
- Excel
이번 장에서는 가장 기본적인 TXT 파일과 CSV 파일을 다루는 방법을 학습합니다.
파일을 사용하려면 먼저 파일을 열어야 합니다. 기본 문법은 다음과 같습니다:
파일객체 = open("파일명", "모드")
대표적인 모드는 다음과 같습니다:
| 모드 | 설명 |
|---|---|
| "r" | 읽기(Read) |
| "w" | 쓰기(Write) |
| "a" | 이어쓰기(Append) |
파일 사용이 끝나면 반드시 닫아야 합니다. 다음과 같이 작성합니다:
file.close()
예제 파일: hello.txt
파일 내용:
안녕하세요. 파이썬입니다.
파일 전체 읽기:
file = open("hello.txt", "r", encoding="utf-8")
text = file.read()
print(text)
file.close()
파이썬입니다.
한 줄씩 읽기:
file = open("hello.txt", "r", encoding="utf-8")
for line in file:
print(line)
file.close()
파이썬입니다.
줄 끝의 줄바꿈 문자(\n)도 함께 읽기 때문에 빈 줄처럼 보일 수 있습니다.
줄바꿈 제거:
file = open("hello.txt", "r", encoding="utf-8")
for line in file:
print(line.strip())
file.close()
파이썬입니다.
strip() 함수는 문자열 양쪽의 공백과 줄바꿈 문자를 제거합니다.
새 파일 만들기:
file = open("sample.txt", "w", encoding="utf-8")
file.write("안녕하세요.\n")
file.write("파이썬입니다.")
file.close()
실행 후 sample.txt 내용:
안녕하세요. 파이썬입니다.
이어쓰기(Append):
file = open("sample.txt", "a", encoding="utf-8")
file.write("\n오늘도 공부합니다.")
file.close()
실행 후 sample.txt 내용:
안녕하세요. 파이썬입니다. 오늘도 공부합니다.
여러 줄 저장:
names = ["홍길동", "김철수", "이영희"]
file = open("names.txt", "w", encoding="utf-8")
for name in names:
file.write(name + "\n")
file.close()
파일은 with 문을 사용하면 자동으로 닫힙니다. 따라서 가장 많이 사용하는 방법입니다.
읽기:
with open("hello.txt", "r", encoding="utf-8") as file:
print(file.read())
저장하기:
with open("hello.txt", "w", encoding="utf-8") as file:
file.write("파이썬")
with 문을 사용하면 close()를 직접 작성하지 않아도 됩니다.
CSV(Comma Separated Values)는 데이터를 쉼표(,)로 구분하여 저장하는 파일입니다. 엑셀에서도 쉽게 열 수 있어 많이 사용됩니다.
예시: student.csv
이름,나이,점수 홍길동,20,90 김철수,21,80 이영희,19,95
CSV 읽기:
import csv
with open("student.csv", "r", encoding="utf-8") as file:
reader = csv.reader(file)
for row in reader:
print(row)
['홍길동', '20', '90']
['김철수', '21', '80']
['이영희', '19', '95']
CSV 파일의 한 줄은 리스트(List)로 읽어옵니다.
CSV 저장:
import csv
with open("student.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerow(["이름", "나이", "점수"])
writer.writerow(["홍길동", 20, 90])
writer.writerow(["김철수", 21, 80])
생성된 파일:
이름,나이,점수 홍길동,20,90 김철수,21,80
여러 행 저장:
import csv
students = [
["홍길동", 20, 90],
["김철수", 21, 80],
["이영희", 19, 95]
]
with open("student.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerow(["이름", "나이", "점수"])
writer.writerows(students)
writerows()는 여러 개의 데이터를 한 번에 저장합니다.
학생 정보를 TXT 파일에 저장합니다:
students = [
"홍길동,90",
"김철수,80",
"이영희,95"
]
with open("score.txt", "w", encoding="utf-8") as file:
for student in students:
file.write(student + "\n")
저장된 파일:
홍길동,90 김철수,80 이영희,95
CSV 파일을 읽어 학생 정보를 출력합니다:
import csv
with open("student.csv", "r", encoding="utf-8") as file:
reader = csv.reader(file)
next(reader)
for row in reader:
print("이름 :", row[0])
print("나이 :", row[1])
print("점수 :", row[2])
print()
나이 : 20
점수 : 90
이름 : 김철수
나이 : 21
점수 : 80
이름 : 이영희
나이 : 19
점수 : 95
- 파일 처리란 프로그램에서 파일을 읽거나 저장하는 기능이다.
- 파이썬에서 파일을 열기 위해서는 open() 함수를 사용한다.
- 파일을 닫기 위해서는 close() 메서드를 사용해야 한다.
- TXT 파일은 read()와 write() 메서드를 사용하여 읽고 쓸 수 있다.
- CSV 파일은 csv 모듈을 사용하여 쉽게 읽고 쓸 수 있다.
- with 문을 사용하면 파일을 자동으로 닫을 수 있다.