2015-12-10 14 views
6

Tôi biết các thùng S3 không thực sự có các thư mục vì lưu trữ bằng phẳng. Nhưng nó có thể tạo ra các thư mục programmaticaly với python/boto3, nhưng tôi không biết làm thế nào. Tôi thấy điều này trên một bộ phim tài liệu:Tạo các thư mục trong Amazon S3 bằng cách sử dụng python, boto3

"Mặc dù lưu trữ S3 bằng phẳng: thùng chứa khóa, S3 cho phép bạn đặt cấu trúc cây thư mục trên thùng của mình bằng cách sử dụng dấu phân cách trong các phím của bạn Ví dụ: nếu bạn đặt tên key 'a/b/f' và sử dụng '/' làm dấu phân tách, sau đó S3 sẽ xem xét 'a' là một thư mục 'b' là thư mục con của 'a' và 'f' là tệp trong 'b'. "

tôi có thể tạo chỉ các tập tin trong một Bucket S3 bởi:

self.client.put_object(Bucket=bucketname,Key=filename) 

nhưng tôi không biết làm thế nào để tạo ra một thư mục.

+1

Câu trả lời nằm trong câu trích dẫn bạn đã sao chép. Bạn đã thử làm những gì họ nói với bạn để làm gì? –

Trả lời

5

Chỉ cần sửa đổi một chút trong tên khóa. self.client.put_object(Bucket=bucketname,Key=filename)

này nên được thay đổi để

self.client.put_object(Bucket=bucketname,Key=directoryname/filename)

Thats tất cả.

8

Nếu bạn đọc tài liệu API Bạn sẽ có thể thực hiện việc này.

import boto3 
s3 = boto3.client("s3") 
BucketName = "mybucket" 
myfilename = "myfile.dat" 
KeyFileName = "https://stackoverflow.com/a/b/c/d/{fname}".format(fname=myfilename) 
with open(myfilename) as f : 
    object_data = f.read() 
    client.put_object(Body=object_data, Bucket=BucketName, Key=KeyFileName) 

Thành thật mà nói, nó không phải là một "thư mục thực", nhưng cấu trúc chuỗi preformat cho tổ chức.

Các vấn đề liên quan