【问题标题】:How do I return a CSV from a Pylons app?如何从 Pylons 应用程序返回 CSV?
【发布时间】:2010-10-21 20:38:25
【问题描述】:

我正在尝试从我的 web 应用程序中的操作返回 CSV,并提示用户下载文件或从电子表格应用程序打开它。我可以让 CSV 吐出到屏幕上,但是如何更改文件的类型,以便浏览器识别这不应该显示为 HTML?我可以为此使用 csv 模块吗?

import csv

def results_csv(self):

    data = ['895', '898', '897']

    return data

【问题讨论】:

    标签: python csv pylons


    【解决方案1】:

    要告诉浏览器您提供的内容类型,您需要将Content-type 标头设置为“text/csv”。在您的 Pylons 函数中,以下内容应该可以完成这项工作:

    response.headers['Content-type'] = 'text/csv'

    【讨论】:

      【解决方案2】:

      PAG 是正确的,但是如果你想为下载的文件建议一个名称,你也可以设置response.headers['Content-disposition'] = 'attachment; filename=suggest.csv'

      【讨论】:

      • 这有帮助,但文件的名称为“suggest.csv.html” 知道如何解决吗?
      • 是否正确设置了两个响应标头(内容类型和内容配置)?什么浏览器表现出这种特殊的 .html - 附加行为?
      【解决方案3】:

      是的,您可以为此使用 csv 模块:

      import csv
      from cStringIO import StringIO
      

      ...

      def results_csv(self):
          response.headers['Content-Type'] = 'text/csv'
          s = StringIO()
          writer = csv.writer(s)
          writer.writerow(['header', 'header', 'header'])
          writer.writerow([123, 456, 789])
          return s.getvalue()
      

      【讨论】:

        猜你喜欢
        • 2016-07-02
        • 2011-04-09
        • 1970-01-01
        • 2011-02-16
        • 2011-10-08
        • 2017-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多