当前位置: 首页 > 知识库问答 >
问题:

如果未下载s3文件,则捕获错误

贺皓
2023-03-14

我从S3下载一个文件,如下所示:

s3 = boto3.client('s3')
s3.download_file('testunzipping','DataPump_10000838.zip','/tmp/DataPump_10000838.zip')

就目前而言,它总是有效的。但是,我想添加一些错误处理。如果下载失败,我如何检查或获取错误消息。我怎么知道出了什么事?

boto3是否提供任何错误处理功能?

我读到:检查S3下载是否成功完成,但我正在寻找替代方案。

共有2个答案

年健
2023-03-14

这只是为了改进@balderman的答案,实际检查导致BOTO请求失败的异常。

def download_and_verify(Bucket, Key, Filename):
  try:
    os.remove(Filename)
    s3 = boto3.client('s3')
    s3.download_file(Bucket,Key,Filename)
    return os.path.exists(Filename)
  except botocore.exceptions.ClientError as error:
    print(error.response['Error']['Code']) #a summary of what went wrong
    print(error.response['Error']['Message']) #explanation of what went wrong
    return False
支铭晨
2023-03-14

你可以有像下面这样的东西。下载并确保它已创建。

import boto3 
import os


def download_and_verify(Bucket, Key, Filename):
  try:
    os.remove(Filename)
    s3 = boto3.client('s3')
    s3.download_file(Bucket,Key,Filename)
    return os.path.exists(Filename)
  except Exception: # should narrow the scope of the exception
    return False
 类似资料:
  • 想下载S3签名视频文件…但不是下载它将要播放。。。 使用send_dataS3下载 视频文件=”https://s3-eu-west-1.amazonaws.com/tokboxhub.mangoapps.com/46250362/2e1ad9d5-8240-41d2-82bc-38c34bf92e7e/archive.mp4?X-Amz算法=AWS4-HMAC-SHA256

  • 我正在尝试将jQuery项目转换为Typescript项目。但是,当我使用以下方法从DefinitelyTyped Github中包含jQuery类型时: 我在jquery.d.ts的第27行得到了“uncathed syntaxerror:uncrected identifier”,如下所示 (我使用WebStorm作为IDE) 编辑:好的,我按照下面的一些说明,通过npm终端安装了jQuery

  • 我尝试了很多方法,但仍然不起作用。我试图捕捉JTextfield中是否有数字,它将使字符串文本变为红色,并弹出该选项。但我的代码只有在两个JTextfield中都有数字时才会被捕获。我希望我的JTextField只有字符和空格。 (jtf2和jtf3是JTextField)

  • 问题内容: 我正在尝试下载目录下的文件,而不是直接在存储桶中下载。 值区名称-“ myBucket”文件夹名称-“ myFolder”文件名-“ myFile” GetObjectInput不接受Prefix作为参数。仅指定没有前缀的存储桶名称会导致找不到密钥错误。尝试如下设置“存储桶”,但出现错误 myBucket / myFolder myBucket / myFolder / myBucke

  • 我已经用UUID作为每个文件名的密钥将文件上传到s3 bucket,我要求将文件密钥作为存储的UUID,但当下载时,我需要将下载的文件名作为实际文件名,例如:foo.png aws S3-0E8221B9-9BF4-49D6-B0C0-D99E86F91F8E.png上存储的文件下载文件名应为:foo.bar 我尝试过设置Content-Disposition元数据,但在下载文件时仍然包含UUID

  • 我在做一个函数来禁止一个成员在JDA中使用他的/她的id<我做了这个: 但是,它不接受错误。我已经尝试删除printStackTrace,但是错误仍然会出现。"Done"和"EEE"不会被打印出来。 此外,它确实接受所有其他错误,但不接受这个错误。 这里给出了错误的一部分