我有一个python脚本,有一个嵌套的for
循环
HostList = file('trylist.txt')
DestHostList = file('trylist2.txt')
for DestHost in DestHostList:
DestHost = DestHost.strip()
for HostName in HostList:
HostName = HostName.strip()
try:
if DestHost!=HostName:
print HostName,DestHost
print "one loop finishes"
except Exception, e:
ExceptionHost.write(HostName+' - '+DestHost+': '+str(e)+'\n')
print "exception"
#traceback.print_exc(file=sys.stdout)
外部for
循环似乎只执行一次。
潜在的问题是什么?在
外部循环执行多次,但只有在第一次迭代中才有事情要做。在其他情况下,内部循环不执行,给您留下的印象是它只运行一次。在
问题是打开第一个文件
trylist.txt
,并在外循环的第一次迭代中完全读取它。在第二次迭代中,file对象(类似迭代器)已经被“消费”。在尝试:
如果文件很大,并且您希望避免将其存储在内存中,则可以每次重新打开它:
^{pr2}$另外,在python中使用
with
语句打开文件是一个很好的做法。在问题是,在第一次传递之后,您已经耗尽了内部循环中的第二个文件。在
如我所见,您试图用
try ... except ...
来解决问题。但是由于文件读取操作在块之外,所以您错过了它。在这里有一个提前读取所有文件内容的解决方案。我希望它能帮助:
相关问题 更多 >
编程相关推荐