Python 3.x 使用boto3(Python3.x)将文件上载到aws s3 bucket以维护文件结构?
我想把文件从磁盘上传到aws s3 bucket,保持不同的文件夹结构。我可以制作与磁盘相同的结构,但需要在结构上稍作更改 磁盘上的文件夹结构是:/home/userdata/upload\u folder/upload\u file 我想在aws bucket上维护的folderkey结构是:Python 3.x 使用boto3(Python3.x)将文件上载到aws s3 bucket以维护文件结构?,python-3.x,boto3,Python 3.x,Boto3,我想把文件从磁盘上传到aws s3 bucket,保持不同的文件夹结构。我可以制作与磁盘相同的结构,但需要在结构上稍作更改 磁盘上的文件夹结构是:/home/userdata/upload\u folder/upload\u file 我想在aws bucket上维护的folderkey结构是: /userdata/uploaded_folder/uploaded_file/ 我当前的代码如下: from boto.s3.connection import S3Connection from
/userdata/uploaded_folder/uploaded_file/
我当前的代码如下:
from boto.s3.connection import S3Connection
from boto.s3.key import Key
import os
conn = S3Connection()
path = '/home/userdata/'
bucket = conn.get_bucket('myBuck')
for root, dirs, files in os.walk(path):
for name in files:
#print(root)
path = root.split(os.path.sep)[1:]
path.append(name)
#print(path)
key_id = os.path.join(*path)
k = Key(bucket)
k.key = key_id
#print(key_id)
#k.set_contents_from_filename(os.path.join(root, name))
上述代码构成了铲斗中的精确结构。如何更改路径?正确的行
path = root.split(os.path.sep)[1:]
到
root.splitos.path.sep中的第一个元素不是“home”是的,我试过了,但后来无法使用路径。如果将path与最后一行k.set\U contents\U from\U filenameos.path.joinroot,name一起使用,则会出现错误。试着用path代替root,它不会起作用。基本上要做的事情是这样的:s3.upload\u filedisk\u path,bucket\u name,full\u path\u to\u s3。我无法做到这一点。
path = root.split(os.path.sep)[2:]