Tôi muốn thao tác một đối tượng python ngâm trong S3 trong hộp cát của Google App Engine. Tôi sử dụng gợi ý trong boto của documentation:Có thể đọc tệp từ S3 trong Google App Engine bằng boto không?
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)
nhưng điều này đòi hỏi tôi phải viết thư cho một tập tin, mà rõ ràng là không kosher trong sandbox GAE.
Làm cách nào để giải quyết vấn đề này? Cảm ơn nhiều sự giúp đỡ nào
cảm ơn Nick. Điều này làm việc, và không cần phải nhập mô-đun StringIO. Tôi nghĩ vì những lý do rõ ràng làm cho nó trở thành một giải pháp tốt hơn. Đối với bất kỳ ai theo dõi ở nhà, tôi đã thay đổi pickle.load (content) thành pickle.loads (content) để làm việc với việc bỏ chọn một đối tượng giống như chuỗi, chứ không phải là tập tin. – rd108
Tôi cũng khuyên bạn nên sử dụng validate = False để gọi get_bucket - nghĩa là bucket = conn.get_bucket (bucket_name, validate = False) khi boto cố gắng truy cập vào nhóm và sẽ thất bại nếu không có quyền truy cập. để biết thêm thông tin, hãy xem: http://stackoverflow.com/questions/12571217/python-amazon-s3-cannot-get-the-bucket-says-403-forbidden –
Ngoài ra, các phím boto có một .open() gọi bạn co thể sử dụng. – meawoppl