访问选项卡分隔存储在GAE blob中的值内容,但使用通用换行模式或等效模式

时间:2011-03-30 20:00:22

标签: python google-app-engine blobstore

我正在尝试将TSV文件的内容作为Google App Engine应用程序的一部分进行阅读。

我可以使用以下方法从文件中读取:

f=csv.reader(open(matrixpath, "rU"),dialect='excel-tab')

但是我现在需要使用blobreader来读取blobstore中的数据:

blob_key = ...
blobdata = blobstore.BlobReader(blob_key)
f=csv.reader(blobdata,dialect='excel-tab')

I've uploaded a copy of the entire code that I'm having this issue with here

如果没有rU参数,我会在不带引号的字段错误中得到一个新行:

  

错误:在不带引号的字段中看到换行符 - 您是否需要以通用换行模式打开文件?

我想修复我的文件,以便我不会收到此错误,或者以通用换行模式模拟blobstore中的打开?

我的文件大约是20MB,a cut down sample of it (that the script still fails on) can be found here

2 个答案:

答案 0 :(得分:1)

我无法直接从示例文件中重现错误。你能吗?

鉴于blob = open('sample-file.tsv', 'rb').read()

  1. reader = csv.reader(blob, dialect='excel-tab')按预期产生大量左右的单字节字段。

  2. 替换StringIO.StringIO(blob)blob.splitlines()生成50行,每行约10000列......似乎工作正常。

  3. 除非您显示(1)您的blob上传代码(以及相关文档的URL)(2)您的代码在GAE上收到错误,否则似乎无法提供进一步的帮助。

答案 1 :(得分:-1)

Upload and parse csv file with "universal newline" in python on Google App Engine开始,以下答案对我有用:

csv.reader(blob.open.read().splitlines())

在GNU / Linux上读取mac格式的csv文件。