在Python中循环模式

时间:2015-05-05 09:04:58

标签: python

我不太明白Python如何遍历列表和文件。

假设我的文件看起来像这样:

textfile

Stations
--------
stn       Name                                 Parameter        Data source                              Longitude/Latitude       Coordinates [km] Elevation [m]
ARA       Arolla                               rre250c0         XX                                                 XXX             XXX             0
BOQ       Bouquetins                           rre250c0         XX                                                 XXX             XXX             0
BRE       Bréona                               rre250c0         XX                                                 XXX             XXX             0
CDR       Col de Riedmatten                    rre250c0         XX                                                 XXX             XXX             0       
CTZ       Crettaz                              rre250c0         XX                                                 XXX             XXX             0                                           
HOL       Hohlicht                             rre250c0         XX                                                 XXX             XXX             0        
TRI       Trift                                rre250c0         XX                                                 XXX             XXX             0        
TAP       Täschalp                             rre250c0         XX                                                 XXX             XXX             0        
VOU       Vouasson                             rre250c0         XX                                                 XXX             XXX             0        

那就是我的代码:

statList = ["ARA", "BOQ", "BRE", "CDR", "CTZ",
            "FEP", "HOL", "TRI", "TAP", "VOU"]

legend34413 = open("textfile.txt", "r")

for k in statList:
    for i in legend34413:
        print k #always prints "ARA"
        #do more stuff

然而,似乎我的第一个for循环不会遍历整个statList。它只会为文件中的每一行打印ARA,但不会打印下一行,即BOQ。 那是为什么?!

1 个答案:

答案 0 :(得分:4)

一旦循环执行一次,并为文件中的每一行打印ARA,它将到达文件的末尾并耗尽迭代器。如果你想让它从头开始重新开始,你需要回放它:

for k in statList:
    for i in legend34413:
        print k
    legend34413.seek(0)

现在,您的代码将为文件中的每一行打印ARA一次。然后它会为文件中的每一行打印BOQ一次,然后每行打印一次BRE,依此类推。