Перечислите контейнеры Azure с определенным типом имени, используя Python - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь перечислить группу лазурных контейнеров с определенным типом имени - все они называются cycling-asset-group-x, где x - это число или буква, например. cycling-актив-группа-a, cycling-актив-группа-1, cycling-актив-группа-b, cycling-актив-группа-2.

Я хочу напечатать контейнеры с числом в суффиксе, т.е. cycling-asset-group-1, cycling-asset-group-2 и т. Д.

Как я могу это сделать? Вот где я до сих пор:

account_name   = 'name'
account_key    = 'key'

# connect to the storage account 
blob_service   = BaseBlobService(account_name = account_name, account_key = account_key)
prefix_input_container = 'cycling-asset-group-'

# get a list of the containers - I think it's something like this...? 
cycling_containers = blob_service.list_containers("%s%d" % (prefix_input_container,...)) 

for c in cycling_containers:
    contname = c.name
    print(contname)

1 Ответ

1 голос
/ 27 марта 2019

Просто передайте значение prefix_input_container параметру prefix метода list_containers из BaseBlobService, как показано ниже. Пожалуйста, обратитесь к справке API BaseBlobService.list_containers.

list_containers (префикс = Нет, num_results = Нет, include_metadata = False, маркер = Нет, время ожидания = Нет) [источник]

Параметры:
prefix (str) - фильтрует результаты, возвращая только контейнеры, имена которых начинаются с указанного префикса.

prefix_input_container = 'cycling-asset-group-'

cycling_containers = blob_service.list_containers(prefix=prefix_input_container) 

# Import regex module to filter the results
import re
re_expression = r"%s\d+$" % prefix_input_container
pattern = re.compile(re_expression)

# There are two ways.
# No.1 Create a generator from the generator of cycling_containers 
filtered_cycling_container_names = (c.name for c in cycling_containers if pattern.match(c.name))
for contname in filtered_cycling_container_names:
    print(contname)

# No.2 Create a name list
contnames = [c.name for c in cycling_containers if pattern.match(c.name)]
print(contnames)
...