我正在尝试解析上传的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的内容?我的意思是标题,名称和数字?
非常感谢!
答案 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商店。