還有其他一些類似的問題,但沒有一個具體回答我的問題。我有一個文件夾充滿了我想要上傳到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