[python] 파일을 한 줄씩 목록으로 읽는 방법은 무엇입니까?

파이썬에서 파일의 모든 줄을 읽고 각 줄을 목록의 요소로 저장하려면 어떻게합니까?

파일을 한 줄씩 읽고 각 줄을 목록 끝에 추가하고 싶습니다.



답변

with open(filename) as f:
    content = f.readlines()
# you may also want to remove whitespace characters like `\n` at the end of each line
content = [x.strip() for x in content] 


답변

입력 및 출력 참조 :

with open('filename') as f:
    lines = f.readlines()

또는 개행 문자를 제거하여 :

with open('filename') as f:
    lines = [line.rstrip() for line in f]


답변

이것은 필요 이상으로 명시 적이지만 원하는 것을 수행합니다.

with open("file.txt") as file_in:
    lines = []
    for line in file_in:
        lines.append(line)


답변

이렇게하면 파일에서 “배열”라인이 생성됩니다.

lines = tuple(open(filename, 'r'))

open반복 할 수있는 파일을 반환합니다. 파일을 반복 할 때 해당 파일에서 줄을 가져옵니다. tuple주어진 반복자에서 반복자를 가져 와서 튜플 인스턴스를 인스턴스화 할 수 있습니다. lines파일 라인에서 작성된 튜플입니다.


답변

\n포함 하고 싶은 경우 :

with open(fname) as f:
    content = f.readlines()

\n포함 하지 않으려 는 경우 :

with open(fname) as f:
    content = f.read().splitlines()


답변

Python의 Files of File Objects 에 따르면 텍스트 파일을 a로 변환하는 가장 간단한 방법 list은 다음과 같습니다.

with open('file.txt') as f:
    my_list = list(f)

텍스트 파일 행을 반복해야하는 경우 다음을 사용할 수 있습니다.

with open('file.txt') as f:
    for line in f:
       ...

오래된 답변 :

사용 with하여 readlines():

with open('file.txt') as f:
    lines = f.readlines()

파일 닫기에 신경 쓰지 않으면이 단일 라이너가 작동합니다.

lines = open('file.txt').readlines()

전통적인 방법 :

f = open('file.txt') # Open file on read mode
lines = f.read().split("\n") # Create a list containing all lines
f.close() # Close file


답변

제안 된대로 간단하게 다음을 수행 할 수 있습니다.

with open('/your/path/file') as f:
    my_lines = f.readlines()

이 방법에는 두 가지 단점이 있습니다.

1) 모든 라인을 메모리에 저장합니다. 일반적으로 이것은 매우 나쁜 생각입니다. 파일이 매우 커서 메모리가 부족할 수 있습니다. 크지 않더라도 단순히 메모리 낭비입니다.

2) 각 줄을 읽을 때 처리 할 수 ​​없습니다. 따라서이 후에 행을 처리하면 효율적이지 않습니다 (하나가 아닌 두 개의 패스가 필요함).

일반적인 경우에 대한 더 나은 접근 방식은 다음과 같습니다.

with open('/your/path/file') as f:
    for line in f:
        process(line)

프로세스 기능을 원하는 방식으로 정의 할 수 있습니다. 예를 들면 다음과 같습니다.

def process(line):
    if 'save the world' in line.lower():
         superman.save_the_world()

( Superman클래스 구현은 연습으로 남겨 두어야합니다).

이것은 모든 파일 크기에 잘 작동하며 1 패스로 파일을 통과합니다. 이것은 일반적으로 일반 파서가 작동하는 방식입니다.