基于文件名列表,这些文件名与我希望能够预测的图像标签相对应,我想自动创建这些文件夹,以便以后可以将正确的文件移至正确的文件夹。
为方便起见,尤其是由于存在大量可能的文件夹,我想根据标识符创建这些存储桶。
例如,我有以下列表 标签 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的文件夹结构。
答案 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)