Google Appengine 按行读取 TextProperty 或 BlobProperty 内容

1 投票
2 回答
783 浏览
提问于 2025-04-16 11:43

我正在做一个Google Appengine的Python项目,用户可以上传一种“csv格式”的文件,这个文件我可以存储在TextPropertyBlobProperty中,因为它们的大小都不会超过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))

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

有没有什么好的建议呢?

2 个回答

0

你需要一个BlobReader,它就像一个文件一样,可以用来从一个blob中读取数据。你可以通过在你的BlobInfo对象上调用.open()来获取一个BlobReader,方法如下:

f = self.file.open()
1

我觉得你遇到的问题是,你把一个字符串传给了csv.reader,但它其实需要的是一个文件对象或者一个列表。

你可以试试用:self.file.split('\n'),这样可以把这个字符串变成一个字符串的列表。

撰写回答