티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
How to read a file line-by-line into a list?
파일을 한 줄씩 리스트로 읽어들이는 방법
문제 내용
How do I read every line of a file in Python and store each line as an element in a list?
파이썬에서 파일의 모든 줄을 읽고 각 줄을 리스트의 요소로 저장하려면 어떻게 해야 합니까?
I want to read the file line by line and append each line to the end of the list.
나는 파일을 한 줄씩 읽고 리스트 끝에 각각의 줄을 추가하고 싶다.
높은 점수를 받은 Solution
This code will read the entire file into memory and remove all whitespace characters (newlines and spaces) from the end of each line:
이 코드는 전체 파일을 메모리로 읽고 각 줄 끝에서 모든 공백 문자(새 줄과 공백)를 제거합니다.
with open(filename) as file:
lines = [line.rstrip() for line in file]
If you're working with a large file, then you should instead read and process it line-by-line:
대용량 파일로 작업하는 경우, 대신 한 줄씩 읽고 처리해야 합니다.
with open(filename) as file:
for line in file:
print(line.rstrip())
In Python 3.8 and up you can use a while loop with the walrus operator like so:
파이썬 3.8 이상에서는 walrus operator와 함께 다음과 같이 while 루프를 사용할 수 있습니다.
with open(filename) as file:
while (line := file.readline().rstrip()):
print(line)
Depending on what you plan to do with your file and how it was encoded, you may also want to manually set the access mode and character encoding:
파일로 수행할 작업과 파일 인코딩 방법에 따라 액세스 모드 및 문자 인코딩을 수동으로 설정할 수도 있습니다.
with open(filename, 'r', encoding='UTF-8') as file:
while (line := file.readline().rstrip()):
print(line)
가장 최근 달린 Solution
The easiest ways to do that with some additional benefits are:
추가적인 이점을 제공하는 가장 쉬운 방법은 다음과 같습니다.
lines = list(open('filename'))
or
또는
lines = tuple(open('filename'))
or
또는
lines = set(open('filename'))
In the case with set
, we must be remembered that we don't have the line order preserved and get rid of the duplicated lines.
세트의 경우, 우리는 라인 순서가 유지되지 않고 중복된 라인을 제거한다는 것을 기억해야 한다.
Below I added an important supplement from @MarkAmery:
아래에 @MarkAmery의 중요한 보충 자료를 추가했습니다.
Since you're not calling
.close
on the file object nor using awith
statement, in some Python implementations the file may not get closed after reading and your process will leak an open file handle.In CPython (the normal Python implementation that most people use), this isn't a problem since the file object will get immediately garbage-collected and this will close the file, but it's nonetheless generally considered best practice to do something like:
파일 객체에서 .close를 호출하지 않거나 명령문을 사용하지 않기 때문에 일부 파이썬 구현에서는 읽기 후 파일이 닫히지 않을 수 있으며 프로세스에서 열린 파일 핸들이 누출됩니다. CPython(대부분의 사람들이 사용하는 일반적인 파이썬 구현체)에서는 파일 객체가 즉시 가비지 수집되어 파일이 닫히기 때문에 문제가 되지 않지만, 그럼에도 불구하고 일반적으로 다음과 같은 작업을 수행하는 것이 최선의 방법으로 간주된다.
with open('filename') as f: lines = list(f)
to ensure that the file gets closed regardless of what Python implementation you're using.
사용 중인 Python 구현에 관계없이 파일이 닫히도록 합니다.
출처 : https://stackoverflow.com/questions/3277503/how-to-read-a-file-line-by-line-into-a-list
'개발 > 파이썬' 카테고리의 다른 글
Python List의 append()와 extend()의 차이점 (0) | 2022.12.02 |
---|---|
Pandas 데이터 프레임에서 열 삭제하기 (0) | 2022.12.01 |
리스트 생성 후 예기치 않게 변경되지 않도록 리스트 복사본 만들기 (0) | 2022.12.01 |
Jupyter Notebook에서 상대경로로 다른 디렉토리 모듈의 로컬 함수 사용하기 (0) | 2022.12.01 |
파일을 복사하는 방법 (0) | 2022.12.01 |