我有:
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
为什么会这样?
答案 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)
都会将您回退到文件的开头(将读取位置移动到文件的开头)。