我正在尝试将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。
答案 0 :(得分:1)
我无法直接从示例文件中重现错误。你能吗?
鉴于blob = open('sample-file.tsv', 'rb').read()
:
reader = csv.reader(blob, dialect='excel-tab')
按预期产生大量左右的单字节字段。
替换StringIO.StringIO(blob)
或blob.splitlines()
生成50行,每行约10000列......似乎工作正常。
除非您显示(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文件。