В облачном хранилище 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