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

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


当前回答

使用此项:

import pandas as pd
data = pd.read_csv(filename) # You can also add parameters such as header, sep, etc.
array = data.values

data是一种数据帧类型,使用值获取ndarray。您还可以使用array.tolist()获取列表。

其他回答

如果要包含以下内容:

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

如果不希望包含:

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

参见输入和输出:

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

或者去掉换行符:

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

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

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

具有文本文件内容:

line 1
line 2
line 3

我们可以在上面txt的同一目录中使用此Python脚本

>>> with open("myfile.txt", encoding="utf-8") as file:
...     x = [l.rstrip("\n") for l in file]
>>> x
['line 1','line 2','line 3']

使用追加:

x = []
with open("myfile.txt") as file:
    for l in file:
        x.append(l.strip())

Or:

>>> x = open("myfile.txt").read().splitlines()
>>> x
['line 1', 'line 2', 'line 3']

Or:

>>> x = open("myfile.txt").readlines()
>>> x
['linea 1\n', 'line 2\n', 'line 3\n']

Or:

def print_output(lines_in_textfile):
    print("lines_in_textfile =", lines_in_textfile)

y = [x.rstrip() for x in open("001.txt")]
print_output(y)

with open('001.txt', 'r', encoding='utf-8') as file:
    file = file.read().splitlines()
    print_output(file)

with open('001.txt', 'r', encoding='utf-8') as file:
    file = [x.rstrip("\n") for x in file]
    print_output(file)

输出:

lines_in_textfile = ['line 1', 'line 2', 'line 3']
lines_in_textfile = ['line 1', 'line 2', 'line 3']
lines_in_textfile = ['line 1', 'line 2', 'line 3']

您可以按照建议简单地执行以下操作:

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()

(超人类的实现留给您作为练习)。

这对于任何文件大小都很有效,您只需一次就可以完成文件。这就是一般解析器的工作原理。