在GAE blob中访问制表符分隔的值内容,但使用通用换行模式或等效方式

1 投票
2 回答
1099 浏览
提问于 2025-04-16 14:45

我正在尝试在一个Google App Engine应用中读取TSV文件的内容。

我可以通过以下方式顺利读取文件:

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')

(我在这里上传了整个代码,里面有我遇到的问题)

如果不加上rU这个参数,我会遇到一个错误,提示在未加引号的字段中出现了换行符:

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

我想要么修复我的文件,以避免这个错误,要么模拟从blobstore以通用换行模式打开文件?

我的文件大约有20MB,这里有一个缩减版的样本(脚本在这个样本上仍然失败)

2 个回答

-1

来自于 在Google App Engine上用Python上传和解析带有“通用换行符”的csv文件 的回答对我有用:

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

这个方法可以用来读取在GNU/Linux系统上格式为Mac的csv文件。

1

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

假设有这段代码 blob = open('sample-file.tsv', 'rb').read()

  1. reader = csv.reader(blob, dialect='excel-tab') 读取时,产生了很多一字节的字段,这个是正常的。

  2. 如果用 StringIO.StringIO(blob) 或者 blob.splitlines() 来替代,结果是50行,每行大约有10000列……看起来是正常工作的。

除非你提供 (1) 你的 blob 上传代码(还有相关文档的链接) (2) 你在 GAE 上遇到错误的代码,否则我无法提供进一步的帮助。

撰写回答