CSV解析上传的文件

时间:2014-01-28 14:41:06

标签: python google-app-engine csv

我正在尝试解析上传的csv文件的内容,但我只得到“垃圾”作为输出。

以下是我的阅读方式:

reader = csv.reader(self.request.get('file').splitlines())
self.response.headers['Content-Type'] = 'text/plain'
for row in reader:
    self.response.out.write(str(row) + "\n")

该文件如下:

name,number,age
barf,123,34
blue,32,23
pluto,53,44

这是我的输出:

['Content-Type: text/csv']
['Content-Length: 50']
['Content-MD5: YzBmNWJiZmNmYjQ3ZGY3NDFhNDFmODVmODhlZWFmMTk=']
['content-disposition: form-data; name="file"; filename="maifile.csv"']
['X-AppEngine-Upload-Creation: 2014-01-28 14:33:33.735642']
[]

如何获取csv的内容?我的意思是标题,名称和数字?

非常感谢!

1 个答案:

答案 0 :(得分:2)

如果您正在使用正确的 multipart / form-data POST,那么文件上载字段的.file属性将是一个真正的文件类对象;只需将 传递给csv.reader()即可。最好在此处使用self.request.POST以确保您的上传是POST ed参数:

reader = csv.reader(self.request.get('file').file)

self.response.headers['Content-Type'] = 'text/plain'
for row in reader:
    self.response.out.write(str(row) + "\n")

如果要将文件作为blob上传到blob存储,则需要使用BlobReader检索实际的blob文件:

from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
    def post(self):
        upload_files = self.get_uploads('file')

       reader = csv.reader(blobstore.BlobReader(upload_files[0]))

       self.response.headers['Content-Type'] = 'text/plain'
       for row in reader:
           self.response.out.write(str(row) + "\n")

其中对self.get_uploads()的调用实际上导致上传的文件被转移到blob商店。

相关问题