如何在Python中读取文件的每一行,并将每一行存储为列表中的元素?

我想逐行读取文件,并将每一行附加到列表的末尾。


当前回答

如果你面对一个非常大/巨大的文件,并且想读得更快(假设你在TopCoder或HackerBank编码竞赛中),你可以一次将相当大的行块读入内存缓冲区,而不只是在文件级别逐行迭代。

buffersize = 2**16
with open(path) as f:
    while True:
        lines_buffer = f.readlines(buffersize)
        if not lines_buffer:
            break
        for line in lines_buffer:
            process(line)

其他回答

如果文档中也有空行,我希望读取内容并将其通过过滤器以防止空字符串元素

with open(myFile, "r") as f:
    excludeFileContent = list(filter(None, f.read().splitlines()))

这比必要的更明确,但可以做到你想要的。

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

参见输入和输出:

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

或者去掉换行符:

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

我喜欢使用以下内容。立即阅读台词。

contents = []
for line in open(filepath, 'r').readlines():
    contents.append(line.strip())

或者使用列表理解:

contents = [line.strip() for line in open(filepath, 'r').readlines()]

根据Python的文件对象方法,将文本文件转换为列表的最简单方法是:

with open('file.txt') as f:
    my_list = list(f)
    # my_list = [x.rstrip() for x in f] # remove line breaks

演示


如果只需要遍历文本文件行,可以使用:

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

旧答案:

使用with和readline():

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().splitlines() # List with stripped line-breaks
f.close() # Close file