7

GoogleAppEngineのサンドボックスのS3に保存されているピクルスのPythonオブジェクトを操作したいと思います。私はbotoのドキュメントの提案を使用します:

from boto.s3.connection import S3Connection

from boto.s3.key import Key

conn = S3Connection(config.key, config.secret_key)
bucket = conn.get_bucket('bucketname')
key = bucket.get_key("picture.jpg")
fp = open ("picture.jpg", "w")
key.get_file (fp)

しかし、これにはファイルに書き込む必要があります。これは明らかにGAEサンドボックスのコーシャではありません。

どうすればこれを回避できますか?助けてくれてありがとう

4

2 に答える 2

7

ファイルや StringIO に書き込む必要はまったくありません。を呼び出しkey.get_contents_as_string()て、キーの内容を文字列として返すことができます。キーのドキュメントはこちらです。

于 2010-10-18T09:32:11.040 に答える
3

BLOB に書き込み、StringIO を使用してデータを取得できます。

from boto.s3.connection import S3Connection
from boto.s3.key import Key
from google.appengine.ext import db

class Data(db.Model)
    image = db.BlobProperty(default=None)

conn = S3Connection(config.key, config.secret_key)
bucket = conn.get_bucket('bucketname')
key = bucket.get_key("picture.jpg")
fp = StringIO.StringIO()
key.get_file(fp)

data = Data(key_name="picture.jpg")
data.image = db.Blob(fp.getvalue())
data.put()
于 2010-10-16T10:04:44.597 に答える