Как мне пройти путь Google Bucket в записной книжке? - PullRequest
1 голос
/ 12 февраля 2020

У меня большой набор изображений в zip-файле. Я хочу перечислить все файлы, чтобы я мог работать с ними.

С тех пор я начал использовать облачную платформу Google и загрузил свои данные в корзину. Работая локально, я использовал этот фрагмент кода, чтобы найти имена файлов всех файлов в наборе данных. Я хочу сделать что-то подобное, чтобы я мог загрузить изображения в свой блокнот.

#files directory in list 
matches = []
for root, dirnames, filenames in os.walk("D:\LH\..."):
    for filename in fnmatch.filter(filenames, '*.nii'):
        matches.append(os.path.join(root, filename)) 

print(matches[0])

Поскольку мой набор данных разделен на 10 различных zip-файлов, у меня есть этот фрагмент кода для перечисления объектов в моем ведре:

from google.cloud import storage


def list_blobs(bucket_name):
    """Lists all the blobs in the bucket."""
    # bucket_name = "your-bucket-name"

    storage_client = storage.Client()

    # Note: Client.list_blobs requires at least package version 1.17.0.
    blobs = storage_client.list_blobs(bucket_name)

    for blob in blobs:
        print(blob.name)

bloblist = list_blobs('adni_data')

, который дает мне список с папки, в которых находятся мои файлы. Но как я могу загрузить эти данные с помощью библиотеки nilearn? Кстати, папки состоят из множества папок с большим количеством папок, после которых файл сохраняется (каждый файл в других папках).

1 Ответ

0 голосов
/ 12 февраля 2020

Перебирая все BLOB-объекты с list_blobs, вы просто получаете ссылки на то, где существуют данные в облачном хранилище - фактические данные изображения не были переданы между GCS и вашим скриптом.

Если вы хотите загрузить изображение с чем-то вроде nilearn.image.load_img, вам нужен путь к локальному .nii файлу, так что вам нужно будет сделать что-то вроде:

for blob in blobs:
    local_filename = '/tmp/' + blob.name
    blob.download_to_filename(local_filename)
    nilearn.image.load_img(local_filename)
...