파이썬으로 파일을 효율적으로 읽는 방법: 줄별 읽기
파이썬에서 파일을 줄별로 읽어 리스트에 저장하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 다음과 같습니다.
open() 함수 사용
def read_file_line_by_line(filename):
"""
파일을 줄별로 읽어 리스트에 저장합니다.
Args:
filename: 읽을 파일의 이름입니다.
Returns:
줄별로 읽은 내용을 담은 리스트입니다.
"""
lines = []
with open(filename, 'r') as f:
for line in f:
lines.append(line.strip())
return lines
# 예시
filename = 'my_file.txt'
lines = read_file_line_by_line(filename)
print(lines)
설명:
open()
함수를 사용하여 파일을 'r' 모드로 엽니다.with
문을 사용하여 파일 객체를 자동으로 닫습니다.for
루프를 사용하여 파일의 각 줄을 반복합니다.strip()
메서드를 사용하여 각 줄의 앞뒤 공백을 제거합니다.- 읽은 내용을
lines
리스트에 추가합니다.
readlines() 함수 사용
def read_file_line_by_line(filename):
"""
파일을 줄별로 읽어 리스트에 저장합니다.
Args:
filename: 읽을 파일의 이름입니다.
Returns:
줄별로 읽은 내용을 담은 리스트입니다.
"""
with open(filename, 'r') as f:
lines = f.readlines()
return [line.strip() for line in lines]
# 예시
filename = 'my_file.txt'
lines = read_file_line_by_line(filename)
print(lines)
open()
함수를 사용하여 파일을 'r' 모드로 엽니다.with
문을 사용하여 파일 객체를 자동으로 닫습니다.readlines()
함수를 사용하여 파일의 모든 줄을 리스트에 저장합니다.- 리스트 표현식을 사용하여 각 줄의 앞뒤 공백을 제거합니다.
def read_file_line_by_line(filename):
"""
파일을 줄별로 읽어 리스트에 저장합니다.
Args:
filename: 읽을 파일의 이름입니다.
Returns:
줄별로 읽은 내용을 담은 리스트입니다.
"""
lines = []
with open(filename, 'r') as f:
while True:
line = f.readline()
if not line:
break
lines.append(line.strip())
return lines
# 예시
filename = 'my_file.txt'
lines = read_file_line_by_line(filename)
print(lines)
open()
함수를 사용하여 파일을 'r' 모드로 엽니다.with
문을 사용하여 파일 객체를 자동으로 닫습니다.readline()
함수를 사용하여 파일의 한 줄을 읽습니다.- 읽은 내용이 없으면 루프를 종료합니다.
- 읽은 내용을
lines
리스트에 추가합니다.
주의:
- 파일을 읽고 나면 반드시
close()
함수를 사용하여 파일을 닫아야 합니다. - 위 코드는 UTF-8 인코딩으로 된 파일을 읽는 것을 가정합니다. 다른 인코딩으로 된 파일을 읽는 경우,
open()
함수의encoding
매개 변수를 적절하게 설정해야 합니다.
def read_file_line_by_line(filename):
"""
파일을 줄별로 읽어 리스트에 저장합니다.
Args:
filename: 읽을 파일의 이름입니다.
Returns:
줄별로 읽은 내용을 담은 리스트입니다.
"""
lines = []
with open(filename, 'r') as f:
for line in f:
lines.append(line.strip())
return lines
# 예시
filename = 'my_file.txt'
lines = read_file_line_by_line(filename)
print(lines)
설명:
- 위 코드는
open()
함수를 사용하여 파일을 'r' 모드로 엽니다. with
문을 사용하여 파일 객체를 자동으로 닫습니다.for
루프를 사용하여 파일의 각 줄을 반복합니다.strip()
메서드를 사용하여 각 줄의 앞뒤 공백을 제거합니다.- 읽은 내용을
lines
리스트에 추가합니다.
사용 방법:
- 위 코드를 원하는 파일에 저장합니다.
- 파일 이름을
filename
변수에 지정합니다. - 코드를 실행하면 파일의 내용이 줄별로 출력됩니다.
예시:
# my_file.txt 파일에 다음 내용이 저장되어 있다고 가정합니다.
안녕하세요
저는 Bard입니다
인공지능 언어 모델입니다
# 코드를 실행하면 다음과 같은 출력이 나타납니다.
안녕하세요
저는 Bard입니다
인공지능 언어 모델입니다
파이썬에서 파일을 줄별로 읽어 리스트에 저장하는 방법은 여러 가지가 있습니다. 앞서 소개드린 방법 외에도 다음과 같은 방법들이 있습니다.
itertools.islice() 함수 사용
import itertools
def read_file_line_by_line(filename):
"""
파일을 줄별로 읽어 리스트에 저장합니다.
Args:
filename: 읽을 파일의 이름입니다.
Returns:
줄별로 읽은 내용을 담은 리스트입니다.
"""
with open(filename, 'r') as f:
lines = list(itertools.islice(f, None))
return [line.strip() for line in lines]
# 예시
filename = 'my_file.txt'
lines = read_file_line_by_line(filename)
print(lines)
설명:
open()
함수를 사용하여 파일을 'r' 모드로 엽니다.with
문을 사용하여 파일 객체를 자동으로 닫습니다.itertools.islice()
함수를 사용하여 파일의 모든 줄을 이터레이터 객체로 변환합니다.list()
함수를 사용하여 이터레이터 객체를 리스트로 변환합니다.- 리스트 표현식을 사용하여 각 줄의 앞뒤 공백을 제거합니다.
mmap 모듈 사용
import mmap
def read_file_line_by_line(filename):
"""
파일을 줄별로 읽어 리스트에 저장합니다.
Args:
filename: 읽을 파일의 이름입니다.
Returns:
줄별로 읽은 내용을 담은 리스트입니다.
"""
with open(filename, 'rb') as f:
mm = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
lines = mm.decode('utf-8').splitlines()
return lines
# 예시
filename = 'my_file.txt'
lines = read_file_line_by_line(filename)
print(lines)
open()
함수를 사용하여 파일을 'rb' 모드로 엽니다.with
문을 사용하여 파일 객체를 자동으로 닫습니다.mmap()
함수를 사용하여 파일을 메모리 맵핑 객체로 변환합니다.decode()
메서드를 사용하여 메모리 맵핑 객체를 문자열로 변환합니다.splitlines()
메서드를 사용하여 문자열을 줄별로 분리합니다.
csv 모듈 사용 (CSV 파일인 경우)
import csv
def read_csv_file_line_by_line(filename):
"""
CSV 파일을 줄별로 읽어 리스트에 저장합니다.
Args:
filename: 읽을 CSV 파일의 이름입니다.
Returns:
줄별로 읽은 내용을 담은 리스트입니다.
"""
with open(filename, 'r') as f:
reader = csv.reader(f)
lines = list(reader)
return lines
# 예시
filename = 'my_data.csv'
lines = read_csv_file_line_by_line(filename)
print(lines)
open()
함수를 사용하여 CSV 파일을 'r' 모드로 엽니다.with
문을 사용하여 파일 객체를 자동으로 닫습니다.csv.reader()
함수를 사용하여 CSV 파일의 내용을 리더 객체로 변환합니다.list()
함수를 사용하여 리더 객체를 리스트로 변환합니다.
주의:
- 위 코드는 UTF-8 인코딩으로 된 파일을 읽는 것을 가정합니다. 다른 인코딩으로 된 파일을 읽는 경우,
open()
함수의encoding
매개 변수를 적절하게 설정해야 합니다. mmap
모듈을 사용하는 경우, 큰 파일을 읽는 데 효율적이지만, 파일이 변경될 가능성이 있는 경우에는 사용하지 않는 것이 좋습니다.csv
모듈을 사용하는 경우, CSV 파일만 읽을 수 있습니다.
참고:
- 파이썬 공식 문서 -
itertools.islice()
함수
python string file