如何在Python中读取文件的每一行,并将每一行存储为列表中的元素?
我想逐行读取文件,并将每一行附加到列表的末尾。
如何在Python中读取文件的每一行,并将每一行存储为列表中的元素?
我想逐行读取文件,并将每一行附加到列表的末尾。
当前回答
另一个选项是numpy.genfromttxt,例如:
import numpy as np
data = np.genfromtxt("yourfile.dat",delimiter="\n")
这将使数据成为一个NumPy数组,其行数与文件中的行数相同。
其他回答
您可以按照建议简单地执行以下操作:
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()
(超人类的实现留给您作为练习)。
这对于任何文件大小都很有效,您只需一次就可以完成文件。这就是一般解析器的工作原理。
如果文档中也有空行,我希望读取内容并将其通过过滤器以防止空字符串元素
with open(myFile, "r") as f:
excludeFileContent = list(filter(None, f.read().splitlines()))
Python 3.4中引入了pathlib,它有一种非常方便的方法来从文件中读取文本,如下所示:
from pathlib import Path
p = Path('my_text_file')
lines = p.read_text().splitlines()
(splitlines调用将其从包含文件全部内容的字符串转换为文件中的行列表。)
pathlib有很多方便的地方。readtext很好,很简洁,您不必担心打开和关闭文件。如果您只需一次将文件全部读入,这是一个不错的选择。
使用此项:
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()获取列表。
这将从文件中生成一个“数组”。
lines = tuple(open(filename, 'r'))
open返回一个可以迭代的文件。当您遍历一个文件时,您会从该文件中获取行。tuple可以使用迭代器,并从您给它的迭代器中为您实例化一个tuple实例。