Python 如何删除行并在同一文件打开时对其进行计数

Python 如何删除行并在同一文件打开时对其进行计数,python,csv,Python,Csv,我正在尝试打开CSV文件,并根据给定的列表删除其中的一些行,在相同的进度下,我想计算这些行以备将来使用 每个文件打开单独工作都很好,如何在相同的打开文件进度中组合它们 我目前的代码是: # read latest file and count rows with open(fileslst[-1], 'rb') as csvfile: csvReader = csv.reader(csvfile) for row in csvReader: for alert in alertsC

我正在尝试打开CSV文件,并根据给定的列表删除其中的一些行,在相同的进度下,我想计算这些行以备将来使用

每个文件打开单独工作都很好,如何在相同的打开文件进度中组合它们

我目前的代码是:

# read latest file and count rows  

with open(fileslst[-1], 'rb') as csvfile:
csvReader = csv.reader(csvfile)
for row in csvReader:
    for alert in alertsCode:
        if any(alert in row[11] for s in alertsCode) :
            counter=counter+1
print (str(counter)+" unnecessary codes in this file")


#open and modify the latest file

with open(fileslst[-1], 'rb') as csvfile:
    csvReader = csv.reader(csvfile)
    clean_rows = [row for row in csvReader if not any(alert in row[11] for alert in alertsCode)]

with open(fileslst[-1], 'wb') as csvfile:
    csv_writer = csv.writer(csvfile)
    csv_writer.writerows(clean_rows)
当我在同一个脚本上运行它时,它不起作用,但单独运行会起作用


我做错了什么

根据您对问题的最初描述,这可能是一个解决方案,尽管它肯定可以优化

excluded = ['your excluded list here']
deleted_rows = 0
with open(file) as read:
    with open(file2) as write:
        w = csv.writer(write)
        r = csv.reader(read)
        for row in r:
            if row not in excluded:
                w.writerow(row)
            else:
                deleted_rows += 1

但我需要在同一个文件上做。。。我得到了这个错误:“IOError:File not open for write”您是否可以删除原始文件,然后用新生成的文件替换它?afaik在python中解析csv文件的方法是使用输入和输出文件。没有任何东西可以阻止您删除并替换输入文件。这样,您就可以更改正在读取的文件,因此在文件更改时,您必须返回到所需的行。更简单的方法是只使用临时文件,然后替换原始文件。替换数据很容易,将数据附加到文件很容易,但据我所知,添加或删除数据通常是通过临时文件完成的。不,我不想找乐子…在第一个问题中,我问了关于删除整行的问题,这个答案对我帮助很大,但在当前的一个例子中,我想了解为什么一个接一个地打开两个文件不能正常工作?无论如何,感谢您的帮助,我使用另一个解决方案使用temp txt文件来保存我需要的值。什么叫“不工作”呢?当我运行open file for counter时,它是工作的,当我打开file for delete rows时,它是工作的…但是,当我在同一个脚本上运行这两个脚本时,它不是工作的!脚本做什么而不是工作?