如何用Python中的csv读取器删除CSV文件中的行?

0 投票
2 回答
3738 浏览
提问于 2025-04-16 13:19

我想处理一个csv文件中的每一行,并把它们存储到数据库里。存储完一行后,我想把这一行从csv文件中删除。我已经写好了获取和存储这一行的代码,但在删除csv文件中的一行时遇到了困难。

我的代码:

import csv
  entries = csv.reader(open('/opt/workspace/jup/juppro/media/docs/phonebook.csv', 'rb'), dialect='excel-tab')
  entries_list = []
  entries_list.extend(entries)
  total_records= len(entries_list)
  uploaded_records=0
  for data in entries_list:
      uploaded_records=uploaded_records+1
      cols = data[0].replace('"','')
      cols1= cols.split(';')
      contact = phonebook()
      contact.email = cols1[0]
      contact.firstname = cols1[1]
      contact.lastname = cols1[2]
      contact.phoneno = cols1[3]
      #names.append(data[0])
      contact.save()

2 个回答

0

我给你推荐这段代码

import csv
from os.path import getsize
from itertools import islice

print 'size of file :',getsize('/opt/workspace/jup/juppro/media/docs/phonebook.csv')

entries = csv.reader(open('/opt/workspace/jup/juppro/media/docs/phonebook.csv', 'rb'), dialect='excel-tab')

n = 3
cnt = 0
chunk = True
while chunk:
    chunk = list(islice(entries,n))
    if chunk==[]: 
        print 'processing ended'
        break
    # here: all the treatments of the rows being in chunk
    cnt += n
    print cnt

如果你处理完了整个文件,就不用担心在处理的时候删除某些行:你可以在处理完后再删除整个文件。

如果你想根据特定的条件删除一些行,告诉我,我们可以调整上面的代码来满足这个需求。

1

1. 把CSV文件的内容读到内存里,比如放到一个列表里。

2. 把需要的行保存到数据库里,然后从列表中把这些行删掉。

3. 把列表中剩下的行再保存回CSV文件里。

撰写回答