删除csv fi中正在使用的行

2024-04-20 10:48:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图删除我的csv文件中正在使用的行,但我不确定如何处理它。我想删除文件中使用的第一行(不包括标题)。我还想使用相同的文件,而不是创建一个新的。到目前为止,我掌握的情况如下:

if os.path.isfile('test.csv'):
    with open("test.csv", "r") as f_input:
        csv_input = csv.reader(f_input)
        next(f_input) #skips header
        for row in csv_input:
            item_c =row[0]
            item_l = row[1]
            item_v = row[2]
            item_k = row[3]
            #DELETE THE ROW AFTER I GET THE INFO FOR EACH "item"

Tags: 文件csvthepathtest标题inputif
1条回答
网友
1楼 · 发布于 2024-04-20 10:48:32

您可以在删除特定行的情况下重新创建输入文件,然后删除原始文件。您还可以将整个文件读入内存,然后删除一些行并重新创建它。然而,第二种方法风险更大。下面是它的运行方式:

import csv
if os.path.isfile('test.csv'):
   with open('test.csv', 'r') as inp, open('test_edited.csv', 'w') as out:
      writer = csv.writer(out)
      reader = csv.reader(inp)
      writer.writerow(next(reader)) #copy headers
      for row in reader:
            item_c = row[0]
            item_l = row[1]
            item_v = row[2]
            item_k = row[3]
            if item_k != "someValue":  #Here you put any condition you want
               writer.writerow(row)    #Save only the rows that do not have someValue

最后你可以删除原始文件

删除具有特定索引的行:

import csv
n_list = [1]
if os.path.isfile('test.csv'):
   with open('test.csv', 'r') as inp, open('test_edited.csv', 'w') as out:
      writer = csv.writer(out)
      reader = csv.reader(inp)
      writer.writerow(next(reader)) #copy headers
      index = 1
      for row in reader:
            item_c = row[0]
            item_l = row[1]
            item_v = row[2]
            item_k = row[3]
            if index not in n_list:  #Here you put any condition you want
               writer.writerow(row)    #Save only the rows that do not have someValue
            index+=1

相关问题 更多 >