簡體   English   中英

如何從 python 腳本在 s3 存儲桶上創建文件夾?

[英]How to create a folder on s3 bucket from python script?

我有一個 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 存儲,它被設計為一個 Key-Value 存儲,其中 key 是文件的全名,文件的內容是 Object。

但是,為了組織簡單,Amazon S3 控制台支持將文件夾概念作為對對象進行分組的一種方式。 Amazon S3 通過為對象使用共享名稱前綴來實現這一點(即,對象的名稱默認以通用字符串/開頭)。 Object 名稱也稱為鍵名。

我建議您使用boto3 package:

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_object API。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM