Доступ к обученной модели / папке Spacy в облачном хранилище Google - PullRequest
1 голос
/ 28 мая 2020

Я развертывал приложение python, которое использует специально обученную модель Spacy в GAE. Я также загрузил папку модели в Google Cloud Storage, но у меня возникли проблемы с получением только папки из корзины хранилища и ее использованием для загрузки в пространстве.

Прямо сейчас, если я пытаюсь получить blob, я могу получить только один файл, а не папка.

Пожалуйста, помогите мне.

К вашему сведению, специально обученная и сохраненная модель Spacy - это папка, содержащая несколько файлов. Спасибо

РЕДАКТИРОВАТЬ 1:

Это структура каталогов сохраненной модели

enter image description here

1 Ответ

0 голосов
/ 28 мая 2020

В облачном хранилище Google нет папок на самом деле, то, что вы видите как папки, является всего лишь представлением, вы можете увидеть более подробное объяснение здесь .

Что вам нужно do - это рекурсивная выборка всех файлов внутри «папки». т.е.:

import sys
from google.cloud import storage
from google.cloud.storage.blob import Blob


client = storage.Client()
for blob in client.list_blobs('mybucket', prefix='sofolder'):
    blobname = blob.name
    blobstring = str(blobname)
    blobcleaname = blobstring.rsplit('/', 1)[-1]
    if not blobstring.endswith('/'):
        blob.download_to_filename('./' + str(blobcleaname))
        print(blobstring)

Обновление 1:

Итак, я быстро воспроизвел ваш вариант использования, просто напечатав для консоли имя моей корзины. У меня есть структура, похожая на вашу:

bucketname
    -filexxx 
    -folderyyy
    -sofolder <--- the folder i'm interested in
      -file1.png
      -folder_a
        -fileinfolder_a.png
      -folder_b
        -fileinfolder_b.png
      -folder_c
        -fileinfolder_c.png

и, запустив это:

import sys
from google.cloud import storage
from google.cloud.storage.blob import Blob

client = storage.Client()
for blob in client.list_blobs('bucketname', prefix='sofolder'):
    blobname = blob.name
    blobstring = str(blobname)
    if not blobstring.endswith('/'):
        print(blobstring)

Я получаю следующий результат:

sofolder/
sofolder/file1.png
sofolder/folder_a/fileinfolder_a.png
sofolder/folder_b/fileinfolder_b.png
sofolder/folder_c/fileinfolder_c.png
...