如何在Python中读取文件的每一行,并将每一行存储为列表中的元素?
我想逐行读取文件,并将每一行附加到列表的末尾。
如何在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所需的时间几乎相等。
其他回答
如果文档中也有空行,我希望读取内容并将其通过过滤器以防止空字符串元素
with open(myFile, "r") as f:
excludeFileContent = list(filter(None, f.read().splitlines()))
另一个选项是numpy.genfromttxt,例如:
import numpy as np
data = np.genfromtxt("yourfile.dat",delimiter="\n")
这将使数据成为一个NumPy数组,其行数与文件中的行数相同。
如果要包含以下内容:
with open(fname) as f:
content = f.readlines()
如果不希望包含:
with open(fname) as f:
content = f.read().splitlines()
这段代码将把整个文件读入内存,并删除每行末尾的所有空白字符(换行符和空格):
with open(filename) as file:
lines = [line.rstrip() for line in file]
如果您正在处理一个大文件,那么您应该逐行读取并处理它:
with open(filename) as file:
for line in file:
print(line.rstrip())
在Python 3.8及以上版本中,可以使用while循环和walrus运算符,如下所示:
with open(filename) as file:
while (line := file.readline().rstrip()):
print(line)
根据您计划对文件执行的操作以及文件的编码方式,您可能还需要手动设置访问模式和字符编码:
with open(filename, 'r', encoding='UTF-8') as file:
while (line := file.readline().rstrip()):
print(line)
这里还有一个选项,对文件使用列表理解;
lines = [line.rstrip() for line in open('file.txt')]
这应该是更有效的方法,因为大部分工作都是在Python解释器内完成的。