繁体   English   中英

如何在Python中使用csv阅读器删除CSV文件行?

[英]How to delete a row of CSV file using csv reader in Python?

我想处理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()
  1. 将CSV读取到内存中,例如列表。
  2. 将相关行保存到数据库,然后从列表中将其删除。
  3. 将列表中的其余行保存回CSV文件。

我向您建议此代码

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

如果所有文件都已处理,则无需在处理时删除行:在处理后将删除文件。

如果您想根据精确的条件删除一些行,请说出它,我们将采用上面的代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM