Python 脚本不会在csv中写入多行

Python 脚本不会在csv中写入多行,python,csv,for-loop,nested-loops,Python,Csv,For Loop,Nested Loops,我的脚本遍历一个csv模式的每一行,并将这些值与另一个csv数据的每一行进行比较。当找到匹配项时,它应该将数据文件中的整行写入新文件。到现在为止,当我运行它时,它只将第一个匹配写入out文件 with open("C:/Users/user/Desktop/c/out.csv", "w", newline="") as write: wtr = csv.writer(write) with open("C:/Users/user/Desktop/c/schema.csv", "r

我的脚本遍历一个csv模式的每一行,并将这些值与另一个csv数据的每一行进行比较。当找到匹配项时,它应该将数据文件中的整行写入新文件。到现在为止,当我运行它时,它只将第一个匹配写入out文件

with open("C:/Users/user/Desktop/c/out.csv", "w", newline="") as write:
    wtr = csv.writer(write)
    with open("C:/Users/user/Desktop/c/schema.csv", "r") as schema:
        rdr = csv.reader(schema)
        with open("C:/Users/user/Desktop/c/data.csv","r") as data:
            dat = csv.reader(data)
            for r in rdr:
                for d in dat:
                    if(r[0] == d[16] and r[1] == d[20]):
                        wtr.writerow(d)

您希望读取schema.csv中每一行的整个data.csv文件,因此需要移动打开的。。。作为rdr:循环中for r内部的数据指令:

编辑:

为了进一步解释,在代码中首先初始化两个rdr和dat迭代器。然后开始在rdr上循环,对于它的第一个元素,开始在dat中的所有元素上循环

完成此操作后,外部循环转到rdr的第二个元素,并在dat上再次开始循环,dat现在为空。所以什么也没发生,它一直在rdr上循环,毫无意义

with open("C:/Users/user/Desktop/c/out.csv", "w", newline="") as write:
    wtr = csv.writer(write)
    with open("C:/Users/user/Desktop/c/schema.csv", "r") as schema:
        rdr = csv.reader(schema)
        for r in rdr:
            with open("C:/Users/user/Desktop/c/data.csv","r") as data:
                dat = csv.reader(data)
                for d in dat:
                    if(r[0] == d[16] and r[1] == d[20]):
                        wtr.writerow(d)