Python Google Appengine像文件一样逐行读取TextProperty或BlobProperty中的文本

Python Google Appengine像文件一样逐行读取TextProperty或BlobProperty中的文本,python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,我正在进行一个Google Appengine Python项目,用户将上传一个“csv类型”文件,我可以将其存储在TextProperty或BlobProperty中,因为它们的大小将大大低于1MB 我不明白的是,以后如何从blob中读取文件,并逐行处理它 import csv class Upload(db.Model): #file = db.TextProperty(verbose_name='Uploaded File', required=True) file =

我正在进行一个Google Appengine Python项目,用户将上传一个“csv类型”文件,我可以将其存储在
TextProperty
BlobProperty
中,因为它们的大小将大大低于1MB

我不明白的是,以后如何从blob中读取文件,并逐行处理它

import csv

class Upload(db.Model):
    #file = db.TextProperty(verbose_name='Uploaded File', required=True)
    file = db.BlobProperty(verbose_name='Uploaded File', required=True)
    #  ...

    def ProcessCsv(self):
        csvReader = csv.reader(self.file,delimiter=',')
        for row in csvReader:
            print(', '.join(row))
打印只是打印出“文件”中每行的每个字符


有什么想法吗?

我想现在的情况是,当csv.reader需要一个文件对象或列表时,您正在将一个字符串交给它


尝试:self.file.split('\n')将字符串转换为字符串列表。

我认为发生的事情是,当csv.reader需要文件对象或列表时,您正在将字符串交给它


请尝试:self.file.split('\n')将字符串转换为字符串列表。

您需要BlobReader,它是一个类似文件的对象,用于从blob中读取。您可以通过在BlobInfo对象上调用
.open()
来获得一个,如下所示:

f = self.file.open()

您需要一个BlobReader,它是一个用于从blob读取的类似文件的对象。您可以通过在BlobInfo对象上调用
.open()
来获得一个,如下所示:

f = self.file.open()

我就是这么做的,但我认为这不是正确的解决方案。谢谢,我不确定这是不是一个完美的解决方案。如果csv文件变大,效率可能会降低。我就是这么做的,但我认为这不是正确的解决方案。谢谢,我不确定这是不是一个完美的解决方案。如果csv文件变大,则效率可能会降低。