如何用Python中的csv读取器删除CSV文件中的行?
我想处理一个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文件里。