파일에서 데이터 읽기
이제 book.txt를 생성하고 내용을 작성했으므로, 그 내용을 읽는 방법을 배워보겠습니다. Python 은 파일을 읽기 위한 몇 가지 방법을 제공합니다. 가장 일반적인 방법들을 살펴보겠습니다.
계속해서 file_io.py 스크립트를 사용할 것입니다. 방금 생성한 파일을 읽기 위한 코드를 추가하게 됩니다.
read() 메서드
read() 메서드는 파일의 전체 내용을 읽어 하나의 문자열로 반환합니다.
file_io.py 스크립트 끝에 다음 코드를 추가합니다. 이렇게 하면 스크립트가 먼저 파일을 작성한 다음, 다시 읽어서 그 내용을 출력하게 됩니다.
## The writing code from the previous step should be above this
print("\n--- Reading entire file with read() ---")
with open("book.txt", "r") as f:
content = f.read()
print(content)
파일을 저장하고 터미널에서 실행합니다.
python ~/project/file_io.py
이제 출력 결과에 book.txt의 내용이 콘솔에 인쇄되어 나타납니다.
--- Reading entire file with read() ---
Bed before bright moonlight,
Suspected to be frost on the ground.
Head held high, gazing at the bright moon,
Head bowed low, thinking of my homeland.
줄 단위로 반복하기 (Iterating Over Lines)
특히 큰 파일을 읽을 때 메모리 효율적인 방법은 파일을 한 줄씩 처리하는 것입니다. for 루프에서 파일 객체를 직접 반복하여 이 작업을 수행할 수 있습니다.
이제 file_io.py에 다음 코드 블록을 추가합니다.
print("\n--- Reading file line by line ---")
with open("book.txt", "r") as f:
for line in f:
print(line, end='')
여기서 print() 함수의 end=''는 파일에서 읽어온 각 line이 이미 줄 바꿈 문자 (\n) 로 끝나기 때문에 불필요한 추가 줄 바꿈이 생기는 것을 방지합니다.
다시 저장하고 스크립트를 실행합니다.
python ~/project/file_io.py
이 섹션의 출력은 read() 메서드의 출력과 동일하지만, 내부 프로세스는 한 번에 한 줄씩 읽는 방식이 다릅니다.
readlines() 메서드
readlines() 메서드는 파일의 모든 줄을 읽어 문자열 리스트로 반환합니다.
마지막으로, 이 마지막 코드 블록을 file_io.py에 추가합니다.
print("\n\n--- Reading all lines with readlines() ---")
with open("book.txt", "r") as f:
all_lines = f.readlines()
print(all_lines)
마지막으로 저장하고 스크립트를 실행합니다.
python ~/project/file_io.py
이 섹션의 출력은 Python 리스트가 될 것이며, 각 요소는 파일의 한 줄을 나타내는 문자열입니다.
--- Reading all lines with readlines() ---
['Bed before bright moonlight,\n', 'Suspected to be frost on the ground.\n', 'Head held high, gazing at the bright moon,\n', 'Head bowed low, thinking of my homeland.']
이제 Python 에서 파일에 쓰기와 읽기를 위한 기본 메서드들을 연습해 보았습니다.