【发布时间】:2020-08-08 09:53:13
【问题描述】:
我有两个 CSV 文件,其中一个可能比另一个包含更多的记录。我正在编写一个函数来迭代每个并确定哪些记录在转储中但不是骗子。
我的代码如下:
def update_lib(x, y):
dump = open(x, newline='')
libr = open(y, newline='')
dump_reader = csv.reader(dump)
for dump_row in dump_reader:
libr_reader = csv.reader(libr)
for libr_row in libr_reader:
if dump_row[0] == libr_row[0]:
break
我希望这会获取转储 (dump_row) 中的第一行并遍历库 (libr_row) 中的每一行以查看第一个元素是否匹配。如果他们这样做了,那么我想移动到转储中的下一行,如果没有,我最终会做其他事情。
我的问题是 libr_reader 似乎“记住”了它的位置,我无法让它回到 libr 的第一行,即使已经达到 break,因此我希望 libr_reader 是重新发起。我什至尝试过del libr_row 和del libr_reader,但这似乎没有什么不同。我怀疑我误解了迭代器,感谢您提供任何帮助。
【问题讨论】: