在Python中将文件读取为字符串列表

1 投票
3 回答
3302 浏览
提问于 2025-04-16 00:58

在Python中,当你使用fileName.readlines()这个函数来读取文件时,列表里会有一个表示文件结束的符号吗?

举个例子,如果文件被读入一个字符串列表,最后一行是'End',那么列表里会有另一个地方有一个符号来表示文件结束吗?

谢谢。

3 个回答

0

它只是返回一个包含每一行内容的列表——列表里没有“文件结束”(EOF)这个项。

1

通过 .readlines() 返回的列表,就像其他的 Python 列表一样,没有“结束”标记。比如说,你用 L = myfile.readlines() 读取文件后,可以用 len(L) 查看列表 L 有多少项,用 L[-1] 获取最后一项,或者用 for item in L: 循环遍历每一项,等等……这和其他列表的用法是一样的。

如果因为某种特殊原因,你想在最后一行后面加一个特别的“标记”值,比如说可以用 L.append('') 来添加这样一个标记,空字符串是不会和其他行的内容重复的(因为每一项都是完整的一行,包括最后的 '\n',所以它永远不会是空字符串!)。

你也可以使用其他任意的标记,比如 None,但通常来说,如果可能的话(而且在这种情况下显然是可能的,我刚才已经展示过),用和其他项完全相同类型的标记会更简单。这取决于你需要一个超出末尾的“标记”来做什么处理(我不打算猜测,因为你没有给出任何提示,而且在 Python 中,只有相对少见的问题才适合这样解决;-),但在几乎所有可以想象到的使用标记的情况下,使用 '' 作为标记都是完全可以的。

5

不,这个列表里每一项对应文件中的一行。

你可以用一个循环来处理每一行,像这样:

lines = infile.readlines()
for line in lines:
    # Do something with this line
    process(line)

Python有一种更简洁的方法来做到这一点,它可以避免一次性把整个文件读入内存。

for line in infile:
    # Do something with this line
    process(line)

如果你只想要文件的最后一行的话。

lines = infile.readlines()
last_line = lines[-1]

你为什么觉得需要在最后加一个特殊符号呢?

撰写回答