Python 批量读取csv文件。读者总是漏掉同一行

Python 批量读取csv文件。读者总是漏掉同一行,python,csv,Python,Csv,我有一个简单的python脚本,它以5个批读取csv文件。csv文件总共包含9条记录(不包括标题)。下面的脚本5次一批读取文件,但似乎总是跳过ID为6的记录,我做错了什么 csv文件: "RIG_ID","STATUS_DATE" "1","2019-04-10 "2","2019-04-11 "3","2019-04-12 "4","2

我有一个简单的python脚本,它以5个批读取
csv
文件。csv文件总共包含9条记录(不包括标题)。下面的脚本5次一批读取文件,但似乎总是跳过ID为
6的记录,我做错了什么

csv文件:

"RIG_ID","STATUS_DATE"
"1","2019-04-10
"2","2019-04-11
"3","2019-04-12
"4","2019-04-13
"5","2019-04-14
"6","2019-04-15
"7","2019-04-16
"8","2019-04-17
"9","2019-04-18
Python脚本:

batch_size = 5
transaction_count = 0

parameter_set = []

with open('test.csv', 'r') as file:
    reader = csv.DictReader(file, delimiter=',')

    for row in reader:

        entry = get_entry(row)

        if(len(parameter_set) == batch_size):
            execute_transaction(sql, parameter_set)

            transaction_count = transaction_count + 1
            print(f'Transaction count: {transaction_count}')

            parameter_set.clear()
        else:
            parameter_set.append(entry)
            
    # check if we have records that didn't fit into a batch (i.e. less than 5)
    if(len(parameter_set) > 0):
        execute_transaction(sql, parameter_set)
        transaction_count = transaction_count + 1
        print(f'Transaction count: {transaction_count}')

如果我在该行设置断点
entry=get\u entry(行)
在第一批完成后,我得到
ID=7
,因此跳过了csv中的第6行。

问题是,当
if
条件变为
true
时,您没有
条目添加到
参数集中

len(parameter_set) == batch_size
清除
参数集
后,还需要将
条目
附加到
参数集
。因此,我建议:

         if(len(parameter_set) == batch_size):
            execute_transaction(sql, parameter_set)

            transaction_count = transaction_count + 1
            print(f'Transaction count: {transaction_count}')

            parameter_set.clear()
            parameter_set.append(entry)
        else:
            parameter_set.append(entry)
或者,为了避免重复代码,您也可以将
.append()
移出if-else条件,因为它总是被执行的

       if(len(parameter_set) == batch_size):
            execute_transaction(sql, parameter_set)

            transaction_count = transaction_count + 1
            print(f'Transaction count: {transaction_count}')

            parameter_set.clear()
            
       parameter_set.append(entry)

问题在于,当您的
if
条件变为
true
时,您没有
条目添加到
参数集

len(parameter_set) == batch_size
清除
参数集
后,还需要将
条目
附加到
参数集
。因此,我建议:

         if(len(parameter_set) == batch_size):
            execute_transaction(sql, parameter_set)

            transaction_count = transaction_count + 1
            print(f'Transaction count: {transaction_count}')

            parameter_set.clear()
            parameter_set.append(entry)
        else:
            parameter_set.append(entry)
或者,为了避免重复代码,您也可以将
.append()
移出if-else条件,因为它总是被执行的

       if(len(parameter_set) == batch_size):
            execute_transaction(sql, parameter_set)

            transaction_count = transaction_count + 1
            print(f'Transaction count: {transaction_count}')

            parameter_set.clear()
            
       parameter_set.append(entry)

非常感谢。真不敢相信我错过了谢谢你!我真不敢相信我错过了