如何在googleappengine上用python实现csvwriter

如何在googleappengine上用python实现csvwriter,python,csv,google-app-engine,google-app-engine-python,Python,Csv,Google App Engine,Google App Engine Python,我有一个应用程序,可以编写csv作为对特定URL调用的响应。但是,我不知道如何逃避角色 现在,我的代码是这样的 import csv class ReturnCSV(BaseHandler): def get(self, group_id): self.response.headers['Content-Type'] = 'text/csv' self.response.headers['Content-Disposition']

我有一个应用程序,可以编写csv作为对特定URL调用的响应。但是,我不知道如何逃避角色

现在,我的代码是这样的

import csv
class ReturnCSV(BaseHandler):
        def get(self, group_id):
            self.response.headers['Content-Type'] = 'text/csv'
            self.response.headers['Content-Disposition'] = "attachment; filename=scenarios.csv"
            self.write(','.join(header))     #header is a list defined elsewhere

            for scenario in list_of_scenarios:
                #do stuff
                self.write('\r\n' + ','.join(output)))  
这使我得到了预期的输出,只是它没有转义特殊字符。我想我需要用QUOTE_ALL实现csv.writer,但在尝试时,我得到一个
IOError(errno.EROFS,'只读文件系统',文件名)


所以,如果我不尝试打开文件,然后取出所有的
,',那么它就可以工作了。加入我手动创建CSV时所做的

output = StringIO.StringIO()
row = header #header created elsewhere
wr = csv.writer(output, quoting=csv.QUOTE_MINIMAL)
wr.writerow(row)
for scenario in list_of_scenarios:
    # do stuff
    wr.writerow(datarow)
self.response.headers['Content-Type'] = 'text/csv'
self.response.headers['Content-Disposition'] = "attachment; filename=scenarios.csv"
self.write(output.getvalue())

您是否可以直接将其写入
self.response.out
,或者甚至可能写入
self.response
?IIRC,
self.response.out
csv
非常相似。我发现如果我不尝试打开文件并使用output=StringIO.StringIO(),我可以使用self.write(output.getvalue())
output = StringIO.StringIO()
row = header #header created elsewhere
wr = csv.writer(output, quoting=csv.QUOTE_MINIMAL)
wr.writerow(row)
for scenario in list_of_scenarios:
    # do stuff
    wr.writerow(datarow)
self.response.headers['Content-Type'] = 'text/csv'
self.response.headers['Content-Disposition'] = "attachment; filename=scenarios.csv"
self.write(output.getvalue())