mjh*_*jhm 46 python amazon-s3 boto
必须有一种简单的方法来获取文件大小(密钥大小)而不需要拉过整个文件.我可以在AWS S3浏览器的属性中看到它.我想我可以从"HEAD"请求的"Content-length"标题中删除它.但我并没有把关于如何用boto做这个的小点联系起来.如果您发布一些比标准boto文档更全面的示例的链接,则会有额外的荣誉.
编辑:所以以下似乎可以做到这一点(虽然从查看源代码我不完全确定.):
bk = conn.get_bucket('my_bucket_name')
ky = boto.s3.key.Key(bk)
ky.open_read() ## This sends a GET request.
print ky.size
Run Code Online (Sandbox Code Playgroud)
现在我将把问题留待评论,更好的解决方案或示例指针.
gar*_*aat 67
这可行:
bk = conn.get_bucket('my_bucket_name')
key = bk.lookup('my_key_name')
print key.size
Run Code Online (Sandbox Code Playgroud)
查找方法只是在桶上为键名执行HEAD请求,因此它将返回键的所有标题(包括内容长度),但不会传输键的任何实际内容.
在S3 tutoria l在此背景下确切提到了这一点,但也不是很明确的,而不是.我将在此处添加一个部分,以便于查找.
注意:对于每个http://boto.cloudhackers.com/s3_tut.html
返回404的旧链接,请在:"/en/latest"
之后添加.(有人需要探索mod_rewrite ......)".com"
http://boto.cloudhackers.com/en/latest/s3_tut.html
Kri*_*ian 36
在boto3中:
s3.head_object
还执行HEAD请求以检索有关对象的元数据:
s3 = boto3.client('s3')
response = s3.head_object(Bucket='bucketname', Key='keyname')
size = response['ContentLength']
Run Code Online (Sandbox Code Playgroud)
sat*_*ova 13
在博托 3 中:
使用 S3,Object
您可以以字节为单位获取文件(又名对象)大小。它是代表 Amazon S3 对象的资源。
事实上,您可以获得与对象相关的所有元数据。像content_length
对象大小、content_language
内容所使用的语言content_encoding
、last_modified
、 等。
import boto3
s3 = boto3.resource('s3')
object = s3.Object('bucket_name','key')
file_size = object.content_length #size in bytes
Run Code Online (Sandbox Code Playgroud)
参考boto3 文档
oyo*_*ant 10
在boto3
使用S3资源:
boto3.resource('s3').Bucket(bucketname).Object(keyname).content_length
Run Code Online (Sandbox Code Playgroud)
head_object
S3客户端的电话给我返回了一个HTTP“ 403 Forbidden”
如果需要检查多个文件,您还可以获得所有对象的列表。对于给定的存储桶,运行list_objects_v2
然后迭代响应“内容”。例如:
s3_client = boto3.client('s3')
response_contents = s3_client.list_objects_v2(
Bucket='name_of_bucket'
).get('Contents')
Run Code Online (Sandbox Code Playgroud)
你会得到一个像这样的字典列表:
[{'Key': 'path/to/object1', 'LastModified': datetime, 'ETag': '"some etag"', 'Size': 2600, 'StorageClass': 'STANDARD'}, {'Key': 'path/to/object2', 'LastModified': 'datetime', 'ETag': '"some etag"', 'Size': 454, 'StorageClass': 'STANDARD'}, ... ]
Run Code Online (Sandbox Code Playgroud)
请注意,列表中的每个字典都包含“Size”键,它是特定对象的大小。它是可迭代的
for rc in response_contents:
print(f"Size: {rc.get('Size')}")
Run Code Online (Sandbox Code Playgroud)
您可以获得您可能感兴趣的所有文件的大小:
Size: 2600
Size: 454
Size: 2600
...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37005 次 |
最近记录: |