在python中迭代文件行
我有一个文件,其中有一些名字逐行列出在python中迭代文件行,python,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 "
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']
然而,当我遍历这个列表时,我无法这样做
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
另外,当我将其分配给变量“topology_list”时,如倒数第二行所示,并将其打印出来。它给了我一个空列表
[]
所以我有两个问题
我的方法有什么问题?
如何做到这一点?如下更改代码:
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()
时,文件指针将到达文件的末尾。对于相同的进一步调用,返回值将是一个空列表。最简单的:
[]
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
变量将包含尾随的新行字符,例如“this is a line”file.readlines()
读取所有行。这意味着在第一次调用之后,文件指针位于文件的末尾,这将导致对file.readlines()
的第二次和第三次调用返回空。很好的解决方法,感谢您对该虚幻新行字符的解释!为什么print语句没有括号?因为我回答这个问题时使用的是Python 2.7