Как узнать размер объекта BLOB-объекта Azure с помощью Python Azure SDK - PullRequest
0 голосов
/ 19 ноября 2018

В соответствии с документацией Microsoft Azure для разработчиков Python .Класс azure.storage.blob.models.Blob имеет закрытый метод с именем __sizeof__().Но он возвращает константное значение 16 независимо от того, является ли BLOB-объект пустым (0 байт) или 1 ГБ.Есть ли какой-либо метод / атрибут объекта BLOB-объекта, с помощью которого я могу динамически проверять размер объекта?

Проще говоря, вот так выглядит мой исходный код.

for i in blobService.list_blobs(container_name=container, prefix=path):
    if i.name.endswith('.json') and r'CIJSONTM.json/part' in i.name:
        #do some stuffs

Однако в пуле данных содержится много пустых больших двоичных объектов с допустимыми именами, и, прежде чем я #do some stuffs, я хочу провести дополнительную проверку размера, чтобы определить, имею ли я дело с пустым большим двоичным объектом.

Кроме того, бонус за то, что именно дает метод __sizeof__(), если не размер объекта BLOB?

1 Ответ

0 голосов
/ 19 ноября 2018

Я хочу провести дополнительную проверку размера, чтобы определить, имею ли я дело с пустым блобом.

Мы могли бы использовать BlobProperties (). Content_length чтобы проверить, является ли это пустой BLOB-объект.

BlockBlobService.get_blob_properties(block_blob_service,container_name,blob_name).properties.content_length

Ниже приведен демонстрационный код для получения BLOB-объекта content_length:

from azure.storage.blob import BlockBlobService
block_blob_service = BlockBlobService(account_name='accoutName', account_key='accountKey')
container_name ='containerName'
block_blob_service.create_container(container_name)
generator = block_blob_service.list_blobs(container_name)
for blob in generator:
    length = BlockBlobService.get_blob_properties(block_blob_service,container_name,blob.name).properties.content_length
    print("\t Blob name: " + blob.name)
    print(length)
...