Python : 在 google 云存储中将所有文件读取为 gcs_uri

Python : Read all files as gcs_uri in google cloud storage

我是 google 云平台的新手,我遇到了这个问题:在我的 google 存储桶中,我有 5 个文件夹,每个文件夹包含 100 个音频文件 (.wav),我想要访问其中的每一个,然后将语音转换为文本。

我已经成功地使用 google 的语音转文本 api 完成了第二部分,但仅适用于特定的 gcs_uri 路径:

(例如 gcs_uri ="gs://my_bucket/1/6965842449357946277.wav"

我希望能够将所有 500 个 wav 文件用作 gcs_uri,但我不确定如何通过遍历每个存储桶中的每个 wav 文件来做到这一点。到目前为止我试过了:

from google.cloud import speech_v1p1beta1 as speech
from google.cloud import storage

os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="C:/Users/me/project/key.json"

client = speech.SpeechClient()

bucket1 = storage.Client().bucket("gs://my_bucket/1")
bucket2 = storage.Client().bucket("gs://my_bucket/2")
bucket3 = storage.Client().bucket("gs://my_bucket/3")
bucket4 = storage.Client().bucket("gs://my_bucket/4")
bucket5 = storage.Client().bucket("gs://my_bucket/5")

print("Bucket name: {}".format(bucket1))

blobs = bucket1.list_blobs()
print("Blob name: {}".format(blobs))

*** Bucket name: <Bucket: gs://my_bucket/1>
*** Blob name: <google.api_core.page_iterator.HTTPIterator object at 0x000002283FC4AAF0> *

有人能帮忙吗?

创建一个传递存储桶名称的函数,然后使用 list_blobs 方法进行迭代,示例:

def hello_gcs(bucket_name):
    client = storage.Client()
    bucket = client.bucket(bucket_name)
    blobs = client.list_blobs(bucket_name)

    for blob in blobs:
      blob = bucket.get_blob(blob.name)
      if blob.name.endswith('.wav'):
         print("Blob name is {}".format(blob.name))