webrequest对象龙卷风中的csv

时间:2015-05-19 06:17:21

标签: python csv tornado

我通过上传csv生成了以下webrequest对象主体:

------WebKitFormBoundaryZfGb9EY1D9p7BTV9
Content-Disposition: form-data; name="file"; filename="vb_bpm.csv"
Content-Type: text/csv

10/05/2015,00:08:17,8,3960,2,52503,19824
10/05/2015,00:19:35,8,3960,2,52542,19824
10/05/2015,02:21:21,8,3960,2,55366,19824
10/05/2015,02:32:11,8,3960,2,55942,19824
10/05/2015,02:43:13,8,3960,2,56139,19824
10/05/2015,02:54:09,8,3960,2,56750,19824
10/05/2015,03:05:08,8,3960,2,57007,19824
10/05/2015,03:16:10,8,3960,2,57040,19824
10/05/2015,03:27:00,8,3960,2,57633,19824
10/05/2015,03:37:54,8,3960,2,58306,19824
10/05/2015,03:48:47,8,3960,2,58984,19824

------WebKitFormBoundaryZfGb9EY1D9p7BTV9--

我想将其保存到新的csv文件中。 以下给出了上述输出:

def csv_handle(self, request, response) :
        print request.body()

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

什么是“webrequest对象”? Tornado的请求对象具有body属性,但没有body方法。假设您的意思是Tornado请求并且在request.body上使用parens是一个拼写错误,您可以使用请求的files属性。 body始终是原始请求主体,在本例中包含multipart/form-data包装器。 Tornado识别multipart/form-data内容类型(针对非流请求)并将其解析为files对象。在这种情况下,您可以在request.files["file"][0].body下找到您的csv文件。

答案 1 :(得分:0)

我建议严格验证所有上传的数据,以防止代码注入和数据质量下降。

我的解决方案是通过正则表达式运行上传的行:

import re

lines = str(request.body).split()
p = "\d{1,2}\/\d{1,2}\/\d{2,4},\d{1,2}\:\d{1,2}\:\d{1,2},\d+,\d+,\d+,\d+,\d+"
filtered_body = "\n".join(filter(lambda l: re.match(p, l), lines))

print "Original:\n%s\n" % request.body
print "Filtered:\n%s\n" % filtered_body

您的数据的结果输出:

Original:
------WebKitFormBoundaryZfGb9EY1D9p7BTV9
Content-Disposition: form-data; name="file"; filename="vb_bpm.csv"
Content-Type: text/csv

10/05/2015,00:08:17,8,3960,2,52503,19824
10/05/2015,00:19:35,8,3960,2,52542,19824
10/05/2015,02:21:21,8,3960,2,55366,19824
10/05/2015,02:32:11,8,3960,2,55942,19824
10/05/2015,02:43:13,8,3960,2,56139,19824
10/05/2015,02:54:09,8,3960,2,56750,19824
10/05/2015,03:05:08,8,3960,2,57007,19824
10/05/2015,03:16:10,8,3960,2,57040,19824
10/05/2015,03:27:00,8,3960,2,57633,19824
10/05/2015,03:37:54,8,3960,2,58306,19824
10/05/2015,03:48:47,8,3960,2,58984,19824

------WebKitFormBoundaryZfGb9EY1D9p7BTV9--

Filtered:
10/05/2015,00:08:17,8,3960,2,52503,19824
10/05/2015,00:19:35,8,3960,2,52542,19824
10/05/2015,02:21:21,8,3960,2,55366,19824
10/05/2015,02:32:11,8,3960,2,55942,19824
10/05/2015,02:43:13,8,3960,2,56139,19824
10/05/2015,02:54:09,8,3960,2,56750,19824
10/05/2015,03:05:08,8,3960,2,57007,19824
10/05/2015,03:16:10,8,3960,2,57040,19824
10/05/2015,03:27:00,8,3960,2,57633,19824
10/05/2015,03:37:54,8,3960,2,58306,19824
10/05/2015,03:48:47,8,3960,2,58984,19824

将行保存到文件很简单。

相关问题