ฉันสังเกตเห็นว่าเพียงแค่จับข้อยกเว้นโดยใช้botocore.exceptions.ClientError
เราจำเป็นต้องติดตั้ง botocore botocore ใช้พื้นที่ดิสก์สูงถึง 36M นี่เป็นสิ่งที่กระทบโดยเฉพาะอย่างยิ่งถ้าเราใช้ฟังก์ชั่น aws lambda ถ้าเราใช้ข้อยกเว้นเราสามารถข้ามโดยใช้ไลบรารีพิเศษ!
- ฉันกำลังตรวจสอบว่านามสกุลไฟล์เป็น '.csv'
- สิ่งนี้จะไม่ส่งข้อยกเว้นหากไม่มีที่เก็บข้อมูล!
- สิ่งนี้จะไม่ส่งข้อยกเว้นหากที่เก็บข้อมูลมีอยู่ แต่ไม่มีวัตถุ!
- สิ่งนี้จะทำให้เกิดข้อยกเว้นถ้าที่เก็บข้อมูลว่างเปล่า!
- สิ่งนี้ทำให้เกิดข้อยกเว้นถ้าที่ฝากข้อมูลไม่มีสิทธิ์!
รหัสมีลักษณะเช่นนี้ กรุณาแบ่งปันความคิดของคุณ:
import boto3
import traceback
def download4mS3(s3bucket, s3Path, localPath):
s3 = boto3.resource('s3')
print('Looking for the csv data file ending with .csv in bucket: ' + s3bucket + ' path: ' + s3Path)
if s3Path.endswith('.csv') and s3Path != '':
try:
s3.Bucket(s3bucket).download_file(s3Path, localPath)
except Exception as e:
print(e)
print(traceback.format_exc())
if e.response['Error']['Code'] == "404":
print("Downloading the file from: [", s3Path, "] failed")
exit(12)
else:
raise
print("Downloading the file from: [", s3Path, "] succeeded")
else:
print("csv file not found in in : [", s3Path, "]")
exit(12)