将文件读取到Python中的字符串列表

时间:2010-07-07 22:21:14

标签: python list file

在Python中使用fileName.readlines()函数时,列表中是否包含文件末尾的符号?

例如,如果文件被读入字符串列表而最后一行是“结束”,那么列表中是否会有另一个地方带有表示文件末尾的符号?

感谢。

3 个答案:

答案 0 :(得分:5)

不,该列表包含文件中每一行的一个元素。

您可以对a中的每一行执行某些操作,如下所示:

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]

为什么你认为最后需要一个特殊符号?

答案 1 :(得分:1)

.readlines()返回的列表与任何其他Python列表一样,没有“结束”标记 - 例如从L = myfile.readlines()开始,您可以看到Llen(L)有多少项,使用L[-1]获取最后一项,然后使用{{循环遍历所有项目1}},等等......再次 - 就像任何其他列表一样。

如果出于某些特殊原因,在最后一行之后,你想要一些特殊的“哨兵”值,你可以做for item in L:来添加这样一个哨兵或标记 - 空字符串永远不会去是任何其他行的值(因为每个项都是一个完整的行,包括尾部L.append(''),所以它永远不会是一个空字符串!)。

你可以使用其他任意标记,例如'\n',但通常它更简单,在可行时[[并且在这种情况下显然是可行的,正如我刚才所示]],如果哨兵是准确的与任何其他项目相同的类型。这取决于你正在做什么,需要一个过去的“哨兵”(我不会猜测,因为你没有给我们任何指示,只有相对罕见的问题最好用Python解决,无论如何; - ),但在几乎所有可能的哨兵使用情况下,None哨兵都会没问题。

答案 2 :(得分:0)

它只返回一个包含每一行的列表 - 列表中没有“EOF”项。