第一次“for循环”在第一次迭代python之后停止

时间:2017-10-12 13:01:59

标签: python-2.7 for-loop

我正在使用for循环读取两个不同的文件。首次迭代后,第一个“for循环”停止。打印输出只是f1的第1行,所有行都是f2,但随后退出循环。

for line1 in f1:
    line1 = line1.split('\t')
    for line2 in f2:
        line2 = line2.split('\t')

        print line1,line2
  

F1:

     

X1

     

X2

     

X3

     

F2:

     

Y1

     

Y2

     

Y3

     

输出:

     

x1 y1

     

x1 y2

     

x1 y3

     

x2 y1

     

x2 y2

     

x2 y3

     

x3 y1

     

x3 y2

     

x3 y3

1 个答案:

答案 0 :(得分:1)

您的循环当前是嵌套的,这意味着您的程序将读取f1中每一行的f2的全部内容。但是一旦到达文件2的末尾(在第一个外观的末尾,f2中没有更多的行要读取。所以我们手动将光标重置为开头。

尝试4: 在第一次到达文件末尾时,您没有将光标重置在文件2上,除非您在每次迭代中重新打开文件,您必须手动将光标移动到开头。 如果我现在理解你了:

def print_both(f1, f2):
    f1.seek(0)
    f2.seek(0)
    for line1 in f1:
        line1 = line1.split('\t')
        for line2 in f2:
            line2 = line2.split('\t')
            print(line1, line2)

        f2.seek(0)


print_both(open("f1.tsv", 'r'), open("f2.tsv", 'r'))