如何获取boto S3中的文件/密钥大小?

2024-04-24 10:43:32 发布

您现在位置:Python中文网/ 问答频道 /正文

必须有一种简单的方法来获得文件大小(密钥大小),而不需要拖出整个文件。我可以在AWS S3浏览器的属性中看到它。我想我可以把它从“HEAD”请求的“Content-length”头中去掉。但我不想把怎么和博托联系起来。如果你发布了一个链接,指向一些比standard boto docs中更全面的例子,那就更值得称赞了。

编辑:所以下面的代码似乎起到了作用(尽管从源代码的角度来看,我不完全确定)

bk = conn.get_bucket('my_bucket_name')
ky = boto.s3.key.Key(bk)
ky.open_read()  ## This sends a GET request. 
print ky.size

现在,我将把这个问题留给评论、更好的解决方案或指向示例的指针。


Tags: 文件方法aws属性s3bucket密钥浏览器
2条回答

在boto3中:

s3.head_object还执行HEAD请求以检索有关对象的元数据:

s3 = boto3.client('s3')
response = s3.head_object(Bucket='bucketname', Key='keyname')
size = response['ContentLength']

这将起作用:

bk = conn.get_bucket('my_bucket_name')
key = bk.lookup('my_key_name')
print key.size

lookup方法只是在bucket上对keyname执行HEAD请求,因此它将返回密钥的所有header(包括内容长度),但不会传输密钥的任何实际内容。

S3 tutorial提到这一点,但不是很明确,也不是在这个确切的上下文中。我将添加一个关于此的部分,以帮助您更容易找到它。

注意:对于像http://boto.cloudhackers.com/s3_tut.html这样返回404的旧链接,在".com"http://boto.cloudhackers.com/en/latest/s3_tut.html之后添加"/en/latest"。(有人需要探索mod_rewrite…)

相关问题 更多 >