有没有一种方法可以根据文件名列表在GCS存储桶中自动创建文件夹?

时间:2019-10-10 08:59:50

标签: python bash google-cloud-storage

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

为方便起见,尤其是由于存在大量可能的文件夹,我想根据标识符创建这些存储桶。

例如,我有以下列表 标签 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的文件夹结构。

1 个答案:

答案 0 :(得分:2)

没有“目录”的概念: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)