从GAE中的urlfetch打开一个文件

时间:2012-10-02 00:28:31

标签: python google-app-engine blobstore

我正在尝试在GAE中打开使用urlfetch()检索的文件。

这是我到目前为止所拥有的:

from google.appengine.api import urlfetch

result = urlfetch.fetch('http://example.com/test.txt')
data = result.content
## f = open(...) <- what goes in here?

这可能看起来很奇怪,但BlobStore中有一个非常相似的函数可以将data写入blob文件:

f = files.blobstore.create(mime_type='txt', _blobinfo_uploaded_filename='test')
with files.open(f, 'a') as data:
    data.write(result.content)

如何将data写入任意文件对象?

编辑:应该更清楚;我正在尝试urlfetch 任何文件并在文件对象中打开result.content。所以它可能是.doc而不是.txt

2 个答案:

答案 0 :(得分:3)

您可以使用StringIO模块使用字符串的内容模拟文件对象。

from google.appengine.api import urlfetch
from StringIO import StringIO

result = urlfetch.fetch('http://example.com/test.txt')
f = StringIO(result.content)

然后你可以从f对象中读取()或使用其他文件对象方法,如seek(),readline()等。

答案 1 :(得分:2)

您不必打开文件。您已收到data = result.content中的文本数据。