Google Appengine 按行读取 TextProperty 或 BlobProperty 内容
我正在做一个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))
使用print只会在每一行打印出“文件”中的每一个字符。
有没有什么好的建议呢?
2 个回答
0
你需要一个BlobReader,它就像一个文件一样,可以用来从一个blob中读取数据。你可以通过在你的BlobInfo对象上调用.open()
来获取一个BlobReader,方法如下:
f = self.file.open()
1
我觉得你遇到的问题是,你把一个字符串传给了csv.reader,但它其实需要的是一个文件对象或者一个列表。
你可以试试用:self.file.split('\n'),这样可以把这个字符串变成一个字符串的列表。