【发布时间】:2011-03-09 09:35:13
【问题描述】:
我想处理 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()
【问题讨论】:
-
如果你处理每一行然后删除每一行,最后就不会再有csv文件了。那么,为什么要一个接一个地删除每一行,而不是在完全处理完文件后删除整个文件呢?
-
@eyquem:实际上我想知道每次将整个 csv 行存储到数据库中的进度。为此,我计划做的是调用一个函数,该函数一次将 1 行存储到数据库,从 csv 中删除该行,然后增加计数。然后我可以通过 rowsstored*100/totalrows 找到进度。
-
您的目的只是为了了解治疗的进展情况?我建议您在文档中查看函数 enumerate() 。文件是否会被完全处理?
-
“删除文件中的一行或一行”并不意味着任何具体的事情。删除不能通过删除硬盘中的大块位来完成。删除的效果必须通过受控重写来获得