其实我正在尝试导出带有一些数据的csv文件,下面是我的代码
import csv
from cStringIO import StringIO
import web
def download(list__of_records):
csv_file = StringIO()
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['Name', 'Link'])
for i in list_of_records :
csv_writer.writerow([i[0],i[1]])
web.header('Content-Type','text/csv')
web.header('Content-disposition', 'attachment; filename=%s.csv'%file_name)
return csv_file.getvalue()
list_of_records_1 = [('name',"fedrik"),('age','73'),('city','portland')]
list_of_records_2 = [('name',"wow"),('age','466'),('city','asdsa')]
download(list_of_records_1)
实际上我会在一些网页上使用上面的代码来下载带有list_of_records
数据的csv。
在上面的代码中,我使用的是web,它只是用于指示浏览器下载csv ifle的web.py框架
假设我调用了函数download(list_of_records_1)
,然后下载了包含数据的csv文件,如下所示
Name fedrik
age 73
city portland
假设我用download(list_of_records_2)
调用相同的函数,保存到csv的输出如下
Name fedrik
age 73
city portland
Name wow
age 466
city asd
即如果数据已经在csv中匹配,那么它会被覆盖,如果遇到新数据,那么csv文件将使用以前的数据以及当前的list_of_records_2
数据进行创建。
所以在上面的代码中将结果存储到缓冲区字符串StringIO()
并保存到csv文件后,我们应该截断/删除缓冲区字符串数据,这样当我们调用与其他列表相同的函数时结果以前的数据不会写入当前的csv文件
任何人都可以告诉我如何在上面的代码中截断缓冲区字符串StringIO()
吗?