Boto3中S3 Bucket资源的函数参数类型提示正确类型是什么?
Boto3 S3 Bucket 对象的类型提示正确写法
你用boto3实例化S3 Bucket的代码如下:
import boto3 session = boto3.Session() s3 = session.resource('s3') src_bucket = s3.Bucket('input-bucket')
接着编写了统计Bucket内对象总数的函数:
def get_total_objects(bucket): count = 0 for i in bucket.objects.all(): count = count + 1 return count
尝试了几种类型导入但无效,下面说明bucket参数的正确类型提示写法:
推荐方式:使用官方类型存根库
boto3本身没有内置完整的类型定义,需要安装boto3-stubs库(包含所有AWS服务的类型存根):
pip install boto3-stubs[s3]
安装后直接导入S3专属的Bucket类型即可:
from mypy_boto3_s3.service_resource import Bucket def get_total_objects(bucket: Bucket) -> int: count = 0 for i in bucket.objects.all(): count += 1 return count
无第三方依赖的写法
如果不想额外安装库,可以用ServiceResource作为类型,或者用字符串形式的类型提示:
直接导入基类
from boto3.resources.base import ServiceResource def get_total_objects(bucket: ServiceResource) -> int: count = 0 for i in bucket.objects.all(): count += 1 return count
字符串形式(兼容早期Python版本或避免导入问题)
def get_total_objects(bucket: "boto3.resources.base.ServiceResource") -> int: count = 0 for i in bucket.objects.all(): count += 1 return count
注意:你之前尝试的boto3.resources.model.s3.Bucket是错误的路径,因为boto3的资源类是动态生成的,只有类型存根库才提供了明确的Bucket类定义。
内容的提问来源于stack exchange,提问作者clattenburg cake
相关产品推荐
相关产品推荐

