繁体   English   中英

在谷歌云存储中访问 Spacy 的训练模型/文件夹

[英]Access Spacy's trained model/folder in google cloud storage

我正在部署一个 python 应用程序,它在 GAE 上使用 Spacy 的自定义训练 model。 我还在 Google Cloud Storage 中上传了 model 文件夹,但在仅从存储桶中获取文件夹并使用它加载 spacy 时遇到了问题。

现在,如果我试图获取一个 blob,我只能获取一个文件,而不是一个文件夹。

请帮我。

仅供参考,Spacy 的自定义训练和保存 model 是一个包含多个文件的文件夹。 谢谢

编辑 1:

这是model保存的目录结构

在此处输入图像描述

谷歌云存储在现实中并没有文件夹,你看到的文件夹只是一种表象,你可以在这里看到更详细的解释。

您要做的是递归地获取“文件夹”内的所有文件。 IE:

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)

我收到这个 output:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM