【发布时间】:2021-09-16 23:16:41
【问题描述】:
问题
我有一个文件要写入我的 S3 存储桶中的特定文件夹,让我们调用存储桶 bucket 和文件夹 folderInBucket
我正在使用boto3库来实现并具有以下功能:
我做了什么
def upload_file(file_name, bucket, object_name = None):
if object_name is None:
object_name = file_name
s3 = b3.client('s3')
try:
response = s3.upload_file(file_name, bucket, Key='bulk_movies.json')
except ClientError as e:
print(e)
return False
print('Success!')
return True
upload_file('./s3/bulk_movies.json', 'bucket')
我在使用bucket/folderInBucket 作为第二个参数调用函数时也尝试过,但这会在代码中产生错误(实际上有点像预期的那样)
理解上的差距
这个函数或多或少是从 boto3 文档中删除的。文档并没有真正指定如何写入 S3 存储桶中的特定文件夹。我确信文件本身能够很好地写入存储桶的主目录,因为上面概述的代码可以正常工作。
【问题讨论】:
-
这不是您问题的直接答案,但我建议您查看
fsspec:filesystem-spec.readthedocs.io/en/latest/?badge=latest。例如,请参见此处:filesystem-spec.readthedocs.io/en/latest/… -
您能提供您遇到的错误吗?
-
你正在传递
Key,就像bulk_movies.json- 你的问题。我建议将Key添加为函数的可配置参数。试试如果你传入Key='path/to/bulk_movies.json'会发生什么 -
另外,可能相关,您正在分配
object_name但没有在任何地方使用它
标签: python amazon-web-services amazon-s3 boto3