【发布时间】:2014-01-31 06:31:11
【问题描述】:
昨天我开始使用带有 boto 的 Amazon S3,我设置了一个 python 脚本来创建一个存储桶并将图像上传到一个目录中。跑了好几遍,好像没问题。
我不想经常创建存储桶,所以我将我的脚本调整为 get_bucket:
import os
import boto
s3 = boto.connect_s3()
bucket = s3.get_bucket('images')
# Run Selenium test process to create images
for root, dirs, files in os.walk(imagesPath):
for name in files:
filename = os.path.join(root, name)
key = bucket.new_key('{0}/{1}/{2}'.format(revisionNumber, images_process, name))
print "Uploading " + filename + " to Amazon S3"
key.set_contents_from_filename(filename)
key.set_acl('public-read')
错误来自key.set_contents_from_filename(filename)这一行
此代码本质上是来自 S3 入门指南的 boto 示例代码,我已将其放入循环中。我认为问题在于第一次做事情很棒,但不够强大,无法应对覆盖等问题。我是否需要为 boto 提供更多信息而不仅仅是要上传的文件名?
脚本的输出是:
[exec] Uploading images/Add_Employer_Process/20227M/1.png to Amazon S3
[exec] Traceback (most recent call last):
[exec] File "addEmployerProcess.py", line 121, in <module>
[exec] k.set_contents_from_filename(filename)
[exec] File "C:\Python26\lib\site-packages\boto\s3\key.py", line 969, inset_contents_from_filename
[exec] encrypt_key=encrypt_key)
[exec] File "C:\Python26\lib\site-packages\boto\s3\key.py", line 902, inset_contents_from_file
[exec] size=size)
[exec] File "C:\Python26\lib\site-packages\boto\s3\key.py", line 660, insend_file
[exec] query_args=query_args)
[exec] File "C:\Python26\lib\site-packages\boto\s3\connection.py", line 449, in make_request
[exec] override_num_retries=override_num_retries)
[exec] File "C:\Python26\lib\site-packages\boto\connection.py", line 829, in make_request
[exec] return self._mexe(http_request, sender, override_num_retries)
[exec] File "C:\Python26\lib\site-packages\boto\connection.py", line 794, in _mexe
[exec] raise e
[exec] socket.error: [Errno 10054] An existing connection was forcibly closed by the remote host
我对这一切都是新手,包括 python,所以任何帮助将不胜感激:)
【问题讨论】:
标签: python amazon-web-services amazon-s3 boto