迭代python中的文件行

时间:2018-01-06 04:16:45

标签: python

我有一个文件,其中有一些名称逐行列出。

gparasha-macOS:python_scripting gparasha$ cat topology_list.txt 
First-Topology
Third-topology
Second-Topology

现在我正在尝试迭代这些内容,但我无法这样做。

file = open('topology_list.txt','r')
print file.readlines()
for i in file.readlines():
    print "Entered For\n"
    print i

topology_list = file.readlines()
print topology_list

file.readlines()以列表形式打印文件的行。 所以我得到了这个:

 ['First-Topology\n', 'Third-topology\n', 'Second-Topology\n']

然而,当我遍历此列表时,我无法这样做。

此外,当我将它分配给变量'topology_list'时,如倒数第二行并打印它。它给了我一个空列表。

[]

所以我有两个问题。

我的做法有什么问题? 如何做到这一点?

2 个答案:

答案 0 :(得分:7)

最简单的:

with open('topology_list.txt') as topo_file:
    for line in topo_file:
        print line,  # The comma to suppress the extra new line char

是的,您可以遍历文件句柄,无需调用readlines()。这样,在大型文件上,您不必一次阅读所有行(readlines()所做的事情)。

请注意,line变量将包含尾随换行符,例如"这是一行\ n"

答案 1 :(得分:1)

更改您的代码:

file = open('topology_list.txt','r')
topology_list = file.readlines()
print content
for i in topology_list:
    print "Entered For\n"
    print i
print topology_list

当您致电file.readlines()时,文件指针将到达文件末尾。对于相同的进一步调用,返回值将是一个空列表。