파이썬에서 파일을 한 줄씩 읽는 방법

Jinku Hu 2023년10월10일
  1. 파이썬에서 파일을 한 줄씩 읽는 readlines
  2. 파일 메소드를 반복하여 파이썬에서 한 줄씩 파일을 읽습니다
  3. 파이썬에서 파일을 한 줄씩 읽는 file.read 메소드
  4. 파이썬에서 파일을 한 줄씩 읽는 여러 가지 방법 비교
파이썬에서 파일을 한 줄씩 읽는 방법

아래 내용이 담긴 파일이 있다고 가정 해 봅시다.

Line One: 1
Line Two: 2
Line Three: 3
Line Four: 4
Line Five: 5

파일 내용을 한 줄씩[ "1 행 : 1", "2 행 : 2", "3 행 : 3", "4 행 : 4", "5 행 : 5"목록으로 읽어야합니다. ].

아래 목록에서 파일을 한 줄씩 읽는 다양한 방법을 소개합니다.

파이썬에서 파일을 한 줄씩 읽는 readlines

readlines 는 스트림에서 행 목록을 반환합니다.

>>> filePath = r"/your/file/path"
>>> with open(filePath, 'r', encoding='utf-8') as f:
	f.readlines()

	
['Line One: 1\n', 'Line Two: 2\n', 'Line Three: 3\n', 'Line Four: 4\n', 'Line Five: 5']

마지막 문자\n 도 문자열에 포함되며 str.rstrip('\n')으로 제거 할 수 있습니다.

>>> with open(filePath, 'r', encoding='utf-8') as f:
	[_.rstrip('\n') for _ in f.readlines()]

	
['Line One: 1', 'Line Two: 2', 'Line Three: 3', 'Line Four: 4', 'Line Five: 5']

파일 메소드를 반복하여 파이썬에서 한 줄씩 파일을 읽습니다

우리는 readlines 를 사용하지 않고 파일을 반복해서 한 줄씩 읽을 수 있습니다.

>>> with open(filePath, 'r', encoding='utf-8') as f:
	[_.rstrip('\n') for _ in f]

	
['Line One: 1', 'Line Two: 2', 'Line Three: 3', 'Line Four: 4', 'Line Five: 5']

이 방법은 메모리 사용 관점에서 위의 방법보다 훨씬 낫습니다. readlines 메소드는 메모리에 파일의 모든 라인을 보유하지만 interation 메소드는 파일 컨텐츠의 한 라인 만 메모리에 가져 와서 처리합니다. MemoryError 를 피하기 위해 파일 크기가 매우 큰 경우가 바람직합니다.

파이썬에서 파일을 한 줄씩 읽는 file.read 메소드

file.read(size=-1, /)size 가 설정되어 있지 않으면 EOF 까지 파일에서 읽습니다. str.splitlines 함수를 사용하여 선을 분리 할 수 ​​있습니다.

>>> with open(filePath, 'r') as f:
	f.read().splitlines()

	
['Line One: 1', 'Line Two: 2', 'Line Three: 3', 'Line Four: 4', 'Line Five: 5']

결과는 기본 str.splitlines 메소드에 종료 문자\n 을 포함하지 않습니다. keepends 매개 변수가 True 로 설정되어 있으면\n 을 포함시킬 수 있습니다.

>>> with open(filePath, 'r') as f:
	f.read().splitlines(keepends=True)

	
['Line One: 1\n', 'Line Two: 2\n', 'Line Three: 3\n', 'Line Four: 4\n', 'Line Five: 5']

파이썬에서 파일을 한 줄씩 읽는 여러 가지 방법 비교

이 기사에서 소개 한 여러 방법 중 효율성 성능을 비교해 보겠습니다. 성능 차이를 쉽게 비교하기 위해 테스트 된 파일의 줄 수를 8000 으로 늘립니다.

>>> timeit.timeit('''with open(filePath, 'r', encoding='utf-8') as f:
			f.readlines()''',
	      setup='filePath=r"C:\Test\Test.txt"',
	      number = 10000)
16.36330720000001
>>> timeit.timeit('''with open(filePath, 'r', encoding='utf-8') as f:
			[_ for _ in f]''',
	      setup='filePath=r"C:\Test\Test.txt"',
	      number = 10000)
18.37279060000003
>>> timeit.timeit('''with open(filePath, 'r', encoding='utf-8') as f:
			f.read().splitlines()''',
	      setup='filePath=r"C:\Test\Test.txt"',
	      number = 10000)
12.122660100000019

readlines()메소드는 파일 반복 메소드보다 훨씬 우수하며 file.read().splitlines()는 다른 두 메소드에 비해 25 % 이상의 마진을 갖는 가장 효율적인 메소드입니다.

그러나 메모리가 제약 조건 인 BigData 애플리케이션에서 파일 반복 방법이 위에 설명 된대로 최상입니다.

작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - Python String