Python 从google云存储桶访问图像(smiliar到文件夹)

Python 从google云存储桶访问图像(smiliar到文件夹),python,google-cloud-platform,Python,Google Cloud Platform,我想用python脚本加载存储在bucket中的所有图像。要加载本地存储的图像,我使用以下代码 images_dir = os.path.join(current_dir, 'image_data') images = [] for each in os.listdir(images_dir): images.append(os.path.join(images_dir,each)) 有没有一种方式可以以文件夹式的方式访问存储桶?您可以: 使用 使用 我建议使用google云存储

我想用python脚本加载存储在bucket中的所有图像。要加载本地存储的图像,我使用以下代码

 images_dir = os.path.join(current_dir, 'image_data')
 images = []
 for each in os.listdir(images_dir):
    images.append(os.path.join(images_dir,each))
有没有一种方式可以以文件夹式的方式访问存储桶?

您可以:

  • 使用

  • 使用

  • 我建议使用google云存储来访问和操作bucket对象。这是Python
  • 另一种选择是使用

  • 使用SDK时,请注意对象gs://your bucket/abc/def.txt只是一个名称中碰巧包含“/”字符的对象。没有“abc”目录;只有一个具有给定名称的对象

    要加载所有图像,您需要使用
    list\u blobs()列出google云存储桶中的所有可用文件。
    然后您可以循环下载对象。以下是一个例子:

    from google.cloud import storage
    
    client = storage.Client()
    
    bucket = client.get_bucket("YOUR_BUCKET_NAME")
    blobs = bucket.list_blobs(prefix="YOUR_FOLDER_CONTAINS_IMAGES")
    images = []
    
    for idx, bl in enumerate(blobs):
        if idx == 0:
            continue
        data = bl.download_as_string()
        images.append(data)
    
    不要忘记为身份验证设置GOOGLE\u APPLICATION\u CREDENTIALS环境变量。
    希望能有所帮助。

    一旦“加载”了图像,你将如何处理它们?我将它们转换为张量all_images=tf。转换为张量(images,dtype=tf.string)是下一步为什么“if idx==0:continue”?@asbovelw实际上是跳过头文件“头文件”是什么意思?当我使用代码时,这个“如果”只跳过它找到的第一个文件,所以我假设你是这个意思;但是,为什么要跳过第一个文件?例如,我有3张图片,用你的代码加上“if”只下载了最后2张。对不起@asbovelw,这不是头文件。我注意力不集中。仅跳过文件夹路径是不正确的。例如,您的目标文件夹是gs://bucket/images,其中包含:a.txt、b.txt。
    blob
    将在第一个索引中包含gs://bucket/images。因此,它将是[gs://bucket/images,gs://bucket/images/a.txt,gs://bucket/images/b.txt]。因为它不是文件。我跳过了。如果您打印出
    print(bl)
    ,它将被清除。它旨在跳过文件夹路径本身,而不是处理它,而不是跳过任何文件。