파이썬으로 파일을 효율적으로 읽는 방법: 줄별 읽기

2024-05-09

파이썬에서 파일을 줄별로 읽어 리스트에 저장하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 다음과 같습니다.

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)
  • 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)
  • 읽은 내용이 없으면 루프를 종료합니다.

주의:

  • 파일을 읽고 나면 반드시 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)

사용 방법:

  1. 위 코드를 원하는 파일에 저장합니다.
  2. 파일 이름을 filename 변수에 지정합니다.
  3. 코드를 실행하면 파일의 내용이 줄별로 출력됩니다.

예시:

# 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)
  • 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)
  • 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)
  • csv.reader() 함수를 사용하여 CSV 파일의 내용을 리더 객체로 변환합니다.
  • mmap 모듈을 사용하는 경우, 큰 파일을 읽는 데 효율적이지만, 파일이 변경될 가능성이 있는 경우에는 사용하지 않는 것이 좋습니다.
  • csv 모듈을 사용하는 경우, CSV 파일만 읽을 수 있습니다.
  • 파이썬 공식 문서 - itertools.islice() 함수

python string file


파이썬으로 디렉토리 탐색: listdir vs scandir, 상황별 활용법 비교

파이썬에서는 os 모듈을 사용하여 디렉토리의 모든 파일을 간편하게 목록으로 출력할 수 있습니다. 두 가지 주요 방법을 살펴보겠습니다.os. listdir() 함수는 특정 디렉토리 내의 모든 파일과 디렉토리 이름을 리스트로 반환합니다...


Windows에서 Scipy 설치 시 발생하는 "Lapack/Blas Resources Found" 오류 해결 방법

Windows 환경에서 Python 3.x를 사용하여 Scipy를 설치하려고 하면 "No Lapack/Blas Resources Found"라는 오류 메시지가 나타날 수 있습니다. 이 오류는 Scipy가 작동하는데 필요한 Lapack 또는 Blas 라이브러리를 찾지 못했음을 의미합니다...


Python, SQLite, Pandas를 사용하여 Pandas 데이터 세트에서 SQL 쿼리 실행

이 문서에서는 Python, SQLite 및 Pandas 라이브러리를 사용하여 Pandas 데이터 세트에서 SQL 쿼리를 실행하는 방법에 대해 설명합니다.필요 라이브러리PythonSQLitePandas단계별 설명데이터 준비...


Anaconda와 conda 또는 pip를 사용하여 PyTorch 설치 방법

Anaconda와 conda를 사용하여 PyTorch 설치가상 환경 생성: conda create -n pytorch python=3.8 명령어를 실행하여 PyTorch를 위한 가상 환경을 생성합니다. python=3.8 부분은 Python 버전을 지정하는 부분이며 필요에 따라 변경할 수 있습니다...


파이토치에서 사용자 정의 데이터 세트를 학습 및 테스트 데이터 세트로 분할하는 방법

데이터를 로드하는 데 필요한 라이브러리 (예: os, numpy, pandas)를 임포트합니다.데이터를 로드하고 적절한 형식으로 변환합니다. 예를 들어, 이미지 데이터 세트의 경우 이미지를 텐서로 변환하고 레이블을 정수로 변환해야 합니다...


python string file