Python 如何将.csv扩展名添加到Google App Engine中的文件下载中?

Python 如何将.csv扩展名添加到Google App Engine中的文件下载中?,python,google-app-engine,csv,download,webapp2,Python,Google App Engine,Csv,Download,Webapp2,我正在使用python中的csv模块从GoogleAppEngine中的一个数据存储表创建下载。下载工作正常,但您必须手动添加扩展,以便可以在Excel中打开它。我不知道如何修改响应以使文件下载具有.csv扩展名。我可以这样离开它,但是这个web应用程序是为广大用户设计的,所以我想让他们尽可能容易地使用它 class fuCheckUp(webapp2.RequestHandler): def get(self): schedule_query = emailSchedu

我正在使用python中的csv模块从GoogleAppEngine中的一个数据存储表创建下载。下载工作正常,但您必须手动添加扩展,以便可以在Excel中打开它。我不知道如何修改响应以使文件下载具有.csv扩展名。我可以这样离开它,但是这个web应用程序是为广大用户设计的,所以我想让他们尽可能容易地使用它

class fuCheckUp(webapp2.RequestHandler):

    def get(self):

      schedule_query = emailSchedule.all()
      follow_up_num = schedule_query[0].follow_up_num

      email_job_query = emailJobs.all()
      email_job_query.order('consent_date')

      header_tuple = ('last_modified', 'trigger_id', 'recipient_id', 'test_data', 'unsubscribe', 'start_date_local', 'consent_date', 'fu_period', 'last_fu_sent')
      data_tuples = ()
      variable_list = []

      for i in range(1, follow_up_num + 1):
        i = str(i)

        fu_due = 'fu' + i
        fu_sent = 'fu' + i + '_email_sent'

        variable_list.append(fu_due)
        variable_list.append(fu_sent)

        data_tuples = data_tuples + (fu_due, fu_sent)

    final_data_tuple = header_tuple + data_tuples
    data = [final_data_tuple]

    for part in email_job_query:
        last_modified = str(part.last_modified)
        trigger_id = str(part.trigger_id)
        recipient_id = str(part.recipient_id)
        test_data = str(part.test_data)
        unsubscribed = str(part.unsubscribed)
        start_date_local = str(part.start_date_local)
        consent_date = str(part.consent_date)
        fu_period = str(part.fu_period)
        last_fu_sent = str(part.last_fu_sent)

        var_list = []

        for var in variable_list:
            fu_var = getattr(part, var)
            var_list.append(str(fu_var))

        var_tuple = tuple(var_list)

        fixed_tuple = (last_modified, trigger_id, recipient_id, test_data, unsubscribed, start_date_local, consent_date, fu_period, last_fu_sent)
        csv_tuple = fixed_tuple + var_tuple

        data.append((csv_tuple))

    self.response.headers['Content-Type'] = 'application/csv'
    writer = csv.writer(self.response.out)

    for item in data:
        writer.writerow(item)

添加另一个响应头,如下所示:

Content-Disposition: attachment;filename=example.csv

相应的语法是:self.response.headers['Content-Disposition']='attachment;filename=measurements.csv'