为什么这个doble循环不像我预期的那样工作?

时间:2015-06-30 07:11:01

标签: list python-2.7 for-loop with-statement

我有两个txt文件,有50​​000和25000个数据来比较两个文件中的数据,但只比较第一行并将其添加到列表res1中(打印只是为了了解它是如何工作的)当我运行代码时,它打印元组(如预期的那样),但是只打印lineCue中的值并避免第二个循环,列表结果只是lineCue取的第一个值,而不是两个文件中重复的所有值。什么时候 我尝试了另一种方式,列表内容有24808次重复...... :(

contratos = 'C:\\CONTRATOS.txt'
cuentas = 'C:\\CUENTAS0.txt'

res1 = [[], []] # res1[0] -> ID, res1[1] -> NO ID
res2 = [] # res2 -> REPE
with open(cuentas, 'rb') as cue:
    with open(contratos, 'rb') as con:
        for lineCue in cue.xreadlines():
            print(lineCue)
            for lineCon in con.xreadlines():
                print(lineCue, lineCon)
                if lineCue == lineCon:
                    res1[0].append(lineCon)
print(res1[0])

输出:

['O199924\r\n']

文件: https://dl.dropboxusercontent.com/u/33113171/CONTRATOS.txt https://dl.dropboxusercontent.com/u/33113171/CUENTAS0.txt

1 个答案:

答案 0 :(得分:1)

在外循环的第一次迭代中,您读取整个文件con。你需要每次从头开始阅读它。为此,请在进入内循环之前使用con.seek(0)转到此文件的开头。