如何在python中清空缓冲区stringIO

时间:2013-02-22 11:26:54

标签: python truncate stringio

其实我正在尝试导出带有一些数据的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()吗?

0 个答案:

没有答案