본문 바로가기
지식공학/Python

Python 독학 기본편 #8 텍스트파일 읽기/쓰기

by Eric87 2020. 10. 18.
반응형

이번에 배워볼 python은 입력한 데이터를 텍스트 파일(txt)에 저장하고 저장된 텍스트 파일의 내용을 읽어 들이는 방법에 대해 알아보도록 하겠습니다.

먼저 작성한 내용을 텍스트파일(txt)에 쓰고 저장하는 방법입니다. 다음과 같이 수학점수와 영어점수를 score라는 텍스트 파일에 쓰는 코드입니다.

score_file = open("score.txt","w",encoding="utf8")
print("수학: 100", file=score_file)
print("영어: 97", file=score_file)
score_file.close()

score라는 텍스트를 만들어 "w"는 쓰기 위한 명령어이고 뒤에 encoding="utf8"은 한글 입력이 깨지는 것을 방지하는 엔코딩입니다. 한글을 입력하기 위해서는 utf8코드를 넣어주어야 합니다. 그리고 print를 사용하여 원하는 데이터를 입력합니다. 위 예제는 이전 포스트 내용을 입력했습니다. 그리고 score_file.close()를 꼭 넣어 닫아주어야 합니다. 그럼 왼쪽 창에 score.txt라는 파일이 생성되는 것을 확인할 수 있습니다. 만약 기존에 작성되어 있는 텍스트 파일에 추가하여 데이터를 입력하고 싶다면 다음과 같이 입력하면 됩니다.

score_file = open("score.txt","a",encoding="utf8")
score_file.write("물리: 100")
score_file.write("\n화학: 90")
score_file.close()

기본에 있는 파일에 추가하여 작성을 하는 것이기 때문에 "w"가 아닌 "a"를 사용해야 합니다. 그리고 print를 사용하는 것보다는 score_file.write을 쓰는 것이 더 직관적이라 작성하기 편합니다. 단 python에서는 print를 입력하고 커서가 자동으로 다음 줄로 가기 때문에 줄 바꿈을 할 필요가 없지만 score_file.write은 커서가 다음 줄로 가지 않기 때문에 백 슬러쉬(\)를 사용해서 줄 바꿈을 해주어야 다음 줄에 입력을 할 수 있습니다.

그럼 텍스트 파일을 열어 수학과 영어, 물리, 화학 점수가 입력되는 것을 확인할 수 있습니다.

python에서 작성한 파일을 텍스트 파일에 저장하는 방법을 알아보았고 이번에는 불러오는 방법입니다.

score_file = open("score.txt","r",encoding="utf8")
print(score_file.read())
score_file.close()

"r"은 읽는다라는 명령이고 읽은 내용 모두를 score_file에 저장하는 것입니다. print를 사용해서 해당 내용을 확인해 보면 다음과 같습니다.

만약 한 줄씩 읽고 싶으면 score_file.readline()와 같이 line을 뒤에 붙여주면 됩니다. 우리는 4줄이 입력되어 있는 것을 알고 있기 때문에 print를 4번 사용해서 각 줄의 데이터를 읽을 수 있습니다.

score_file = open("score.txt","r",encoding="utf8")
print(score_file.readline(),end="")
print(score_file.readline())
print(score_file.readline())
print(score_file.readline())
score_file.close()

print는 자동으로 줄 바꿈이 되기 때문에 한 줄이 건너뛰고 입력이 되는데 복습으로 뒤에 end를 붙여보았습니다. end가 붙혀진 print만 줄바꿈이 되지 않는 것을 확인할 수 있습니다.

지금은 우리가 읽은 데이터가 모두 4줄이라는 것을 알지만 만약에 임의 파일을 열어 모두 읽고 싶으면 while문을 사용할 수 있습니다. (복습 중요합니다!!)

score_file = open("score.txt","r",encoding="utf8")
while True:
     line = score_file.readline()
     if not line:
          break
     print(line, end="")
score_file.close()

각 읽은 줄을 line에 저장을 값이 있으면 반복해서 출력을 하고 line이 없으면 그만하라는 의미입니다. 이때 print뒤에 end를 사용했기 때문에 빈 줄이 없습니다.

또 각 줄을 list 화하여 저장하고 저장된 내용을 반복문(for)만 사용해서 표현할 수 있습니다.

score_file = open("score.txt","r",encoding="utf8")
lines = score_file.readlines() #list 형태로 저장
for line in lines:
print(line,end="")
score_file.close()

score_file.close()를 사용해서 open 한 파일은 항상 닫아주어야 하는데 with를 사용하면 더 간편하게 파일을 읽고 쓸 수가 있습니다.

with open("study.txt","w",encoding="utf8") as study_file:
study_file.write("파이썬 공부를 하는 중입니다")

file대신 with를 사용해서 study라는 텍스트 파일을 열고 study_file이라고 명시했습니다. 그리고 write를 이용해서 데이터를 입력합니다. 위 코드를 실행하면 왼쪽 창에 txt 파일이 생성되는 것을 확인할 수 있습니다.

with open("study.txt","r",encoding="utf8") as study_file:
print(study_file.read())

마찬가지로 file대신 with를 사용해서 study.txt 파일을 불러왔고 출력을 하면 다음과 같이 나타납니다.

이것으로 python에서 파일을 읽고 쓰는 방법에 대해 알아보았습니다.

 

반응형

댓글