我有一个文件,其中有一些名称逐行列出。
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'时,如倒数第二行并打印它。它给了我一个空列表。
[]
所以我有两个问题。
我的做法有什么问题? 如何做到这一点?
答案 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()
时,文件指针将到达文件末尾。对于相同的进一步调用,返回值将是一个空列表。