实际上我正在尝试使用一些数据导出一个 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)
实际上,我将在一些下载带有数据的 csv 的网页中使用上面的代码list_of_records
。
在上面的代码中,我使用的只是 web.py 框架,我使用它来指示浏览器下载 csv ifle
假设我调用了该函数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()
上述代码中的缓冲区字符串?