我必须将文件夹从本地移动到 s3。我想知道是否有办法做到这一点。
我的文件夹包含嵌套子文件夹,其中包含文件(通常为 .pdf 或 .doc 或 docx)。
s3fs我知道我可以使用(https://s3fs.readthedocs.io/en/latest/api.html )将单个文件从本地移动到 s3 :
S3FileSystem.put(filename, path, **kwargs) Stream data from local filename to file at path
Run Code Online (Sandbox Code Playgroud)
我的代码看起来像
def upload_data(filepath, file_name):
s3 = s3fs.S3FileSystem()
s3_path = f"name-of-my-bucket/{file_name}"
s3.put(filepath, s3_path)
Run Code Online (Sandbox Code Playgroud)
然而,这允许我上传单个文件。我想发送整个文件夹。
我可以递归地执行此操作,将每个文件一一添加,但是:
1)我认为如果我可以发送文件夹会更容易。
2)维护文件夹的结构会更困难。这意味着我的本地文件folders/subfolders/myfile.pdf将保存在 s3 中,而mypdf.pdf不是folders/subfolders/myfile.pdf
我知道这是相当旧的,并且可能在询问时不存在此功能,但是使用s3fs您只需设置recursive=True
def upload_data(filepath, file_name):
s3 = s3fs.S3FileSystem()
s3_path = f"name-of-my-bucket/{file_name}"
s3.put(filepath, s3_path, recursive=True)
Run Code Online (Sandbox Code Playgroud)