以前,我像这样将文件上传到AmazonS3,它运行良好:
bucket.upload_fileobj(
io.BytesIO(gzipped_content),
fileName2,
ExtraArgs={"ContentType": "text/plain"})
在这种情况下,fileName2被直接放在bucket的根文件夹中。现在我想把fileName2放在子文件夹中。像这样:bucket/year/month/day/fileName2
。我把年/月/日的变量保存为字符串。我尝试过这个:
bucket.upload_fileobj(
io.BytesIO(gzipped_content),
year/month/day/fileName2,
ExtraArgs={"ContentType": "text/plain"})
但这引发了一个错误:CCD_ 2。我也试过这个:
path = year + month + day + fileName2
bucket.upload_fileobj(
io.BytesIO(gzipped_content),
path,
ExtraArgs={"ContentType": "text/plain"})
但在这种情况下,路径显示为完整的文件名。而不是子文件夹。如何使用变量将文件上载到子文件夹?我不能硬编码,因为我需要在循环中运行函数
您需要将路径/键插入为字符串:
bucket.upload_fileobj(
io.BytesIO(gzipped_content),
f"{year}/{month}/{day}/{fileName2}",
ExtraArgs={"ContentType": "text/plain"})
您可以使用许多字符串插值功能构建密钥,包括Python f-string:
f"{year}/{month}/{day}/{fileName2}"