首页 > 解决方案 > 无法从 s3 下载文件,因为垃圾字符串附加到密钥名称

问题描述

我正在尝试从 S3 存储桶中的特定文件夹下载所有文件和文件夹并下载到特定的本地文件夹中。当我尝试下载时,出现异常:

没有这样的文件或目录

我尝试了不同的代码片段来执行相同的任务,但无法解决问题。这是代码片段:

def download(self):
    s3_bucket = self.resource.Bucket(self.bucket)
    for s3_object in s3_bucket.objects.filter(Prefix=self.folder):
        local_path = os.path.join(self.local_path, s3_object.key)
        if not os.path.exists(os.path.dirname(local_path)):
            os.makedirs(local_path)

        key = str(s3_object.key)
        if not key.endswith('/'):
            logging.info("Downloading {}".format(key))
            s3_bucket.download_file(s3_object.key, key)

    return json.dumps({"msg": "data is downloaded"})

但它给了我错误:

IOError:[Errno 2] 没有这样的文件或目录:'temp/abc/metrics_data.csv.CDBdfD3f'

该文件的实际键是 temp/abc/metrics_data.csv 但我不知道从哪里附加了“.CDBdfD3f”。请指导。

标签: pythonamazon-s3boto3

解决方案


我知道它有点晚了,但我遇到了同样的问题,问题是您正在写入文件的目录不存在。我遇到了区分大小写的问题,一旦我输入了正确的路径,一切都按预期工作。


推荐阅读