如何在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()获取列表。

其他回答

Python 3.4中引入了pathlib,它有一种非常方便的方法来从文件中读取文本,如下所示:

from pathlib import Path
p = Path('my_text_file')
lines = p.read_text().splitlines()

(splitlines调用将其从包含文件全部内容的字符串转换为文件中的行列表。)

pathlib有很多方便的地方。readtext很好,很简洁,您不必担心打开和关闭文件。如果您只需一次将文件全部读入,这是一个不错的选择。

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

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

如果您想从命令行或stdin读取文件,也可以使用fileinput模块:

# reader.py
import fileinput

content = []
for line in fileinput.input():
    content.append(line.strip())

fileinput.close()

将文件传递给它,如下所示:

$ python reader.py textfile.txt 

在此处阅读更多信息:http://docs.python.org/2/library/fileinput.html

最简单的方法是:

lines = list(open('filename'))

or

lines = tuple(open('filename'))

or

lines = set(open('filename'))

在set的情况下,我们必须记住,我们没有保留行顺序,并删除重复的行。

下面我添加了@MarkAmery的一个重要补充:

由于您既没有在文件对象上调用.close,也没有使用with语句,因此在某些Python实现中,文件在读取后可能不会关闭,您的进程将泄漏打开的文件句柄。在CPython(大多数人使用的普通Python实现)中,这不是问题,因为文件对象将立即被垃圾收集,这将关闭文件,但通常认为最好的做法是:

with open('filename') as f: lines = list(f) 

以确保无论您使用的是什么Python实现,文件都会被关闭。

我会尝试下面提到的方法之一。我使用的示例文件名为dummy.txt。您可以在此处找到该文件。我假设该文件与代码位于同一目录中(您可以更改fpath以包含正确的文件名和文件夹路径)。

在下面提到的两个示例中,lst给出了您想要的列表。

1.第一种方法

fpath = 'dummy.txt'
with open(fpath, "r") as f: lst = [line.rstrip('\n \t') for line in f]

print lst
>>>['THIS IS LINE1.', 'THIS IS LINE2.', 'THIS IS LINE3.', 'THIS IS LINE4.']

2.在第二种方法中,可以使用Python标准库中的csv.reader模块:

import csv
fpath = 'dummy.txt'
with open(fpath) as csv_file:
    csv_reader = csv.reader(csv_file, delimiter='   ')
    lst = [row[0] for row in csv_reader] 

print lst
>>>['THIS IS LINE1.', 'THIS IS LINE2.', 'THIS IS LINE3.', 'THIS IS LINE4.']

您可以使用这两种方法之一。两种方法创建lst所需的时间几乎相等。