안녕하세요 오랜만에 찾아온 파이썬 코딩 강의입니다.
이번 시간에는 저번 시간의 연장선으로 파일 읽고 쓰기를 해보겠습니다.
저번 시간에 간단한 txt 파일을 열어서 해시화를 했었습니다.
이번에는 txt 파일을 읽고 쓰는 법에 관해 자세하게 알아보도록 하겠습니다.
1. 파일 읽기
이번에는 간단하게 점수들만 있는 txt 파일을 읽어보도록 하겠습니다.
82
70
52
95
62
77
94
-scores.txt-
라는 파일이 있습니다.
이 파일을 차례대로 출력해보겠습니다.
file = open("scores.txt")
for line in file:
print(line)
file.close()
위 코드를 실행할 시
점수가 순서대로 출력됨을 알 수 있습니다.
그럼 혹시
과
때 배운 배열을 이용하여 순서대로 정렬할 수 있을까?
배열의 메서드 sort() 메서드를 사용하면 가능합니다.
백문이 불여일견, 한번 직접 보여드리겠습니다.
file = open("scores.txt")
lines = []
# 위 코드는 lines 라는 배열 변수를 선언해줍니다.
for line in file:
lines.append(line)
# append 메서드를 사용하여
# lines 배열에 line 값을 추가합니다.
lines.sort()
# sort 메서드를 사용하여 오름차순 정렬을 실행합니다.
for line in lines:
print(line)
file.close()
해당 코드를 실행할 시 다음과 같은 결과가 나옵니다.
근데 여기서 잠깐!
왜 출력 될 때 각 값마다 한 줄 띄어서 쓰여질까요?
그것은 txt 파일에 점수를 적을 때
줄바꿈할 때 엔터키(코드상으로 '\n'라고 합니다.)가 인식돼서 그렇습니다.
그렇다면 방법은 무엇이 있을까요?!
방법은 여러가지 있지만 앞으로의 진행을 위해서도 파일의 값을 정수형으로 받는 것으로 하겠습니다.
그러면 정수형으로 받으면 코드는
file = open("scores.txt")
lines = []
# 위 코드는 lines 라는 배열 변수를 선언해줍니다.
for line in file:
lines.append(int(line))
# line을 받을 때 int() 메서드를 사용하여
# 정수형으로 받습니다.
# append 메서드를 사용하여
# lines 배열에 line 값을 추가합니다.
lines.sort()
# sort 메서드를 사용하여 오름차순 정렬을 실행합니다.
for line in lines:
print(line)
file.close()
가 됩니다.
우리가 원하는대로 출력이 되는지 확인해봅시다.
아주 잘 출력이 됨을 볼 수 있습니다.
2. 파일 쓰기
그럼 이번에는 파일을 써보도록 하겠습니다.
파일을 쓰기 위해서는 파일을 불러오는 방법이 다릅니다.
위에서는
file = open("scores.txt")
이렇게 불러왔는데
쓰기 위해서는 모드를 적용해주어야 합니다.
fileCopy = open("scores_copy.txt", mode='wt', encoding='utf-8')
# wt의 모드는 텍스트 형식으로 쓰기 위한 모드입니다.
# 인코딩 형식은 한글을 지원하는 utf-8 형식으로 하겠습니다.
fileCopy.write("쓰고 싶은 텍스트를 입력합니다.\n")
# write 메서드는 자동으로 줄바꿈을 해주지 않기 때문에 직접 \n 값을 넣어주어야 합니다.
그래서 이번에는 scores.txt 파일을 읽어와 저번 시간에 한
90점 이상은 A, 80점 이상은 B, 70점 이상은 C, 그 이하는 낙점으로 처리하여
새로운 파일을 써보도록 하겠습니다.
file = open("scores.txt")
fileCopy = open("scores_copy.txt", mode='wt', encoding='utf-8')
lines = []
# 위 코드는 lines 라는 배열 변수를 선언해줍니다.
for line in file:
lines.append(int(line))
# append 메서드를 사용하여
# lines 배열에 line 값을 추가합니다.
lines.sort()
# sort 메서드를 사용하여 오름차순 정렬을 실행합니다.
for line in lines:
if line >= 90:
fileCopy.write(str(line) + " : A\n")
elif line >= 80:
fileCopy.write(str(line) + " : B\n")
elif line >= 70:
fileCopy.write(str(line) + " : C\n")
else:
fileCopy.write(str(line) + " : 낙점입니다.\n")
file.close()
fileCopy.close()
위 코드를 실행시 코드 파일이 있는 폴더에 scores_copy.txt 라는 파일이 생성되는 것을 볼 수 있습니다.
3. 파일 이어쓰기
모드 wt는 새로 파일을 쓰는 것을 의미합니다.
그래서 뭔가를 이어쓰기에는 힘들죠
그래서 이어쓰기 모드가 따로 있습니다.
이어쓰기 모드의 문법은 다음과 같습니다.
file = open("scores.txt", mode='at' encoding='utf-8')
# r는 읽기, w는 쓰기, a는 이어쓰기 모드입니다.
아까 wt였던 모드에서 w를 a로 바꾸어 줍니다.
그러면 아까 scores.txt 파일에 점수를 더 추가해보겠습니다.
file = open("scores.txt", mode='at', encoding='utf-8')
file.write("84\n")
file.write("74\n")
file.write("66\n")
file.close()
위와 같이 추가됨을 볼 수 있었습니다.
이렇게 이번에는 파일 읽고 쓰기를 배워봤습니다.
다음에는 더 심화된 내용인 함수와 모듈화에 대해 공부해보겠습니다.
그러면 모두 화이팅하시며 공부하시길 바랍니다!
'프로그래밍 > Python' 카테고리의 다른 글
[파이썬 코딩 강의] 함수, 모듈화 (0) | 2021.03.09 |
---|---|
[파이썬 프로그램] 프로그램 다운로드 (0) | 2021.03.01 |
[파이썬 코딩 강의] 배열과 해시 (자료형 심화) (0) | 2020.11.11 |
[파이썬 코딩 강의] 반복문, 배열 (2) | 2020.11.10 |
[파이썬 코딩 강의] 조건문 (if) (0) | 2020.11.10 |