【问题标题】:Is there a way to automatically create folders in GCS buckets based on list of filenames?有没有办法根据文件名列表在 GCS 存储桶中自动创建文件夹?
【发布时间】:2020-02-07 16:11:29
【问题描述】:

基于与我希望能够预测的图像标签相对应的文件名列表,我想自动创建这些文件夹,以便以后可以将正确的文件移动到正确的文件夹中。

为了方便这一点,特别是由于可能存在大量文件夹,我想根据标识符创建这些存储桶。

例如,我有以下列表 标签 4354634 354545 4335435 112121 4865633 ....

目标是遍历列表并在存储桶中创建一个文件夹

gs://some-bucket-name/4354634/

gs://some-bucket-name/354545/

gs://some-bucket-name/4335435/

gs://some-bucket-name/112121/

gs://some-bucket-name/4865633/

gs://some-bucket-name/.../

我尝试了以下代码,但它只在笔记本中给了我某些输出,而不是通过创建文件夹

def sku_to_bucket(label_id):
    bucket = client.get_bucket('some-bucket')
    d = str(label_id) + '/'
    d = bucket.blob(d)

import pandas as pd
loop_sub = pd.read_csv("loopfile.csv")

for label_id in loop_sub.iterrows() :
    sku_to_bucket(label_id)
    print(str(label_id))

下面的输出


(0, label_id 63453654635, 名称:0,dtype = int64)

预期结果是我得到了一个基于 Google Cloud Storage 存储桶中 label_id 的文件夹结构。

【问题讨论】:

    标签: python bash google-cloud-storage


    【解决方案1】:

    没有“目录”的概念:blob/对象始终是文件。 一种解决方法是将虚拟文件添加到文件夹并上传此虚拟文件。 请检查以下相关问题link

    这是我使用的代码:

    import pandas as pd
    
    loop_sub = pd.read_csv("loopfile.csv", names = ['val'])
    bucket = storage_client.get_bucket('some-bucket-name')
    file = 'temp'
    
    for label_id in loop_sub['val']:
        blob = bucket.blob(str(label_id) + '/')
        blob.upload_from_string(file)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2021-10-24
      • 2021-12-21
      • 2020-02-05
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      相关资源
      最近更新 更多