还有其他一些类似的问题,但没有一个具体回答我的问题。我有一个文件夹充满了我想要上传到Amazon S3的文件,并且我尝试了各种不同的东西,都导致无法上传。这是我现在的代码。它成功地在S3上创建了文件夹,但没有上传。将文件夹全部上传到Amazon S3中的特定文件夹
import os
import boto3
s3_bucket = 'bucketname'
s3_bucket_region = 'us-east-1'
folder = 'FolderName'
key_name = folder + '/'
s3_connect = boto3.client('s3', s3_bucket_region)
try:
bucket = s3_connect.put_object(Bucket=s3_bucket, Key=key_name)
print "Bucket:", bucket
except Exception as e:
print "Bucket Error " , e
# upload File to S3
for filename in os.listdir(folder):
file_key_name = folder + '/' + filename
local_path = os.getcwd()
local_name = local_path + '/' + key_name + filename
upload = s3_connect.upload_file(local_name, s3_bucket, file_key_name)
我已经试过的只是类似“文件夹名/”以及“文件夹名/文件名”一file_key_name。我首先想到的第一个参数(local_name)不需要完整的路径,但是相对路径可以工作,但是完整或相对路径都不起作用。
我错过了什么?这个部门的文件非常糟糕。另外它不会抛出错误,它只是不上传。
这可能是有用的https://techietweak.wordpress.com/2016/05/16/file-handling-in-aws-s3-with-python-boto-library/在这一行'k.key = fileName '你应该把'k.key = FolderName/FileName'上传到文件夹。 – moondaisy
我碰到过,但唉,它使用boto库,而我正在使用boto3。 – maxpearl
我的不好,你有没有尝试在文档中的3个例子?他们都调用'boto3.resource'而不是'boto3.client'。这是一个桶:http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Bucket.upload_file这是对象之一:http://boto3.readthedocs.io/en /latest/reference/services/s3.html#S3.Object.upload_file使用客户端(不确定是否与您的客户端相同):http://boto3.readthedocs.io/en/latest/reference/services/s3.html #S3.Client.upload_file – moondaisy