1

实际上我正在尝试使用一些数据导出一个 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()上述代码中的缓冲区字符串?

4

0 回答 0