Moh*_*mis 6 python csv google-app-engine
我正在使用Google App Engine(python),我希望我的用户能够下载使用数据存储区中的一些数据生成的CSV文件(但我不希望他们下载整个内容,因为我重新排序列和东西).
我必须使用csv模块,因为可能有包含逗号的单元格.但问题是,如果我这样做,我将需要编写一个文件,这在Google App Engine上是不允许的
我现在拥有的是这样的:
tmp = open("tmp.csv", 'w')
writer = csv.writer(tmp)
writer.writerow(["foo", "foo,bar", "bar"])
Run Code Online (Sandbox Code Playgroud)
所以我想我想做的是要么用逗号来处理单元格,要么在没有写文件的情况下使用csv模块,因为GAE是不可能的.
Moh*_*mis 17
我找到了一种在GAE上使用CSV模块的方法!这里是:
self.response.headers['Content-Type'] = 'application/csv'
writer = csv.writer(self.response.out)
writer.writerow(["foo", "foo,bar", "bar"])
Run Code Online (Sandbox Code Playgroud)
这样您就不需要编写任何文件了
以下是在GAE 中使用Python CSV模块的完整示例.我通常使用它从gql查询创建csv文件并提示用户保存或打开它.
import csv
class MyDownloadHandler(webapp2.RequestHandler):
def get(self):
q = ModelName.gql("WHERE foo = 'bar' ORDER BY date ASC")
reqs = q.fetch(1000)
self.response.headers['Content-Type'] = 'text/csv'
self.response.headers['Content-Disposition'] = 'attachment; filename=studenttransreqs.csv'
writer = csv.writer(self.response.out)
Run Code Online (Sandbox Code Playgroud)
创建行标签
writer.writerow(['Date', 'Time','User' ])
Run Code Online (Sandbox Code Playgroud)
迭代遍历查询将每个实例作为一行返回
for req in reqs:
writer.writerow([req.date,req.time,req.user])
Run Code Online (Sandbox Code Playgroud)
添加适当的映射,以便在单击链接时打开文件对话框
('/mydownloadhandler',MyDownloadHandler),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4974 次 |
| 最近记录: |