在Python中将文件读取为字符串列表
在Python中,当你使用fileName.readlines()这个函数来读取文件时,列表里会有一个表示文件结束的符号吗?
举个例子,如果文件被读入一个字符串列表,最后一行是'End',那么列表里会有另一个地方有一个符号来表示文件结束吗?
谢谢。
3 个回答
它只是返回一个包含每一行内容的列表——列表里没有“文件结束”(EOF)这个项。
通过 .readlines()
返回的列表,就像其他的 Python 列表一样,没有“结束”标记。比如说,你用 L = myfile.readlines()
读取文件后,可以用 len(L)
查看列表 L
有多少项,用 L[-1]
获取最后一项,或者用 for item in L:
循环遍历每一项,等等……这和其他列表的用法是一样的。
如果因为某种特殊原因,你想在最后一行后面加一个特别的“标记”值,比如说可以用 L.append('')
来添加这样一个标记,空字符串是不会和其他行的内容重复的(因为每一项都是完整的一行,包括最后的 '\n'
,所以它永远不会是空字符串!)。
你也可以使用其他任意的标记,比如 None
,但通常来说,如果可能的话(而且在这种情况下显然是可能的,我刚才已经展示过),用和其他项完全相同类型的标记会更简单。这取决于你需要一个超出末尾的“标记”来做什么处理(我不打算猜测,因为你没有给出任何提示,而且在 Python 中,只有相对少见的问题才适合这样解决;-),但在几乎所有可以想象到的使用标记的情况下,使用 ''
作为标记都是完全可以的。
不,这个列表里每一项对应文件中的一行。
你可以用一个循环来处理每一行,像这样:
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]
你为什么觉得需要在最后加一个特殊符号呢?