如何从python脚本创建s3桶上的文件夹?



我有一个s3桶my-bucket和一个python脚本,我想在桶内创建另一个文件夹(training_data),包括一个文本文件。我被告知要使用s3fs,但到目前为止我无法让它工作,我发现文档相当不直观。

我要做的是:

import os
import s3fs
s3 = s3fs.S3FileSystem(anon=False)
path = 's3://my-bucket/training_data/'
if not os.path.exists(path):
os.makedirs(path)

不幸的是,这不起作用,因为它只是在本地创建一个文件夹。顺便说一下,我已经配置了AWS凭证。有人能帮我吗?

S3是一个对象存储,它被设计成一个键值存储,其中键是文件的全名,文件的内容是object。

但是,为了简化组织,Amazon S3控制台支持文件夹概念作为分组对象的一种方式。Amazon S3通过为对象使用共享名称前缀来实现这一点(也就是说,对象的名称以公共字符串开头,默认情况下为/)。对象名也称为键名。

我建议你使用boto3包:

import boto3
s3_client = boto3.client(service_name='s3', aws_access_key_id=access_key,
aws_secret_access_key=secret_key)
with open(source_file_path, 'rb') as f:
self.s3_client.put_object(Bucket=bucket, Body=f, Key=s3_prefix)

地点:

source_file_path-您要上传的文件的路径。

s3_prefix- s3中所需的键名

您可以直接将文件写入S3。它会帮你创建文件夹。

Python的os库用于本地文件系统。推荐使用boto3库来使用put_objectAPI。

参考:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html S3.Client.put_object

最新更新