Google Appengine从TextProperty或BlobProperty逐行读取文本,就像文件一样

时间:2011-02-12 23:08:01

标签: python google-app-engine google-cloud-datastore

我正在开发一个Google Appengine Python项目,用户将上传一个“csv类型”文件,我可以将其存储在TextPropertyBlobProperty中,因为它们将低于1 MB。

我无法弄清楚如何稍后从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))

print只会在每行的“文件”中打印出每个字符

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我认为正在发生的事情是,当你想要一个文件对象或列表时,你正在将一个字符串交给csv.reader。

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

答案 1 :(得分:0)

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

f = self.file.open()