我想在Google App Engine的沙箱中操作S3中存儲的pickle python對象。我用的是建議在博託的documentation:是否可以使用boto從Google App Engine中的S3讀取文件?
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沙箱潔淨。
我該如何解決這個問題? 感謝任何幫助
謝謝尼克。這可以工作,而無需導入StringIO模塊。我認爲這是一個更好的解決方案,顯而易見的原因。對於任何一個在家中的人,我將pickle.load(內容)改爲pickle.loads(內容),以取消類似字符串的對象而不是類似文件的對象。 – rd108 2010-10-19 00:45:49
我也建議在get_bucket調用中使用validate = False - 即當boto嘗試訪問存儲桶時,即bucket = conn.get_bucket(bucket_name,validate = False),如果它無法訪問存儲桶,將會失敗。欲瞭解更多信息,請參閱:http://stackoverflow.com/questions/12571217/python-amazon-s3-cannot-get-the-bucket-says-403-forbidden – 2013-08-09 05:20:02
另外,boto鍵有一個.open()調用,你可以使用。 – meawoppl 2015-03-10 18:54:47