python嵌套循环使用文件,如果条件不起作用

时间:2014-07-05 20:41:24

标签: python file for-loop

我有:

master = open('master.txt', 'r')
transaction = open('transaction.txt', 'r')

master_list = []
employee_list = []


    for line in master:
        # split the line
        record = line.split(',')
        # extract id from record
        emp_id = record[0]
        # add id to list
        employee_list.append(emp_id)

        for li in transaction:
            # split the line
            rec = li.split(',')
            i_d = rec[3]
            print(i_d)

这可以按预期工作并输出

001
001
001
001
001
002
002
002
002
002
003
003
003
003
003
004
004
004
004
004
005
005
005
005
005

但是如果我在嵌套循环中使用if语句,如下所示:

for li in transaction_file:
            # split the line
            rec = li.split(',')
            i_d = rec[3]
            if i_d == emp_id:
                print(emp_id)

我只收到001 001 001 001 001

为什么会这样?

1 个答案:

答案 0 :(得分:2)

您永远不会回滚您的交易文件;你在主循环的第一个循环中经历过一次。

您拥有的结构可能不是最好的,但是:

for line in master:
    # split the line
    record = line.split(',')
    # extract id from record
    emp_id = record[0]
    # add id to list
    employee_list.append(emp_id)

    transaction.seek(0)
    for li in transaction:
        # split the line
        rec = li.split(',')
        i_d = rec[3]
        print(i_d)

每次迭代之前,transaction.seek(0)都会将您回退到文件的开头(将读取位置移动到文件的开头)。