gpt4 book ai didi

azure - 使用 Go 在 azure 层次结构中列出 blob 时出现问题

转载 作者:行者123 更新时间:2023-12-02 23:52:57 24 4
gpt4 key购买 nike

在 python 中,这是有效的:

container_client.walk_blobs(name_starts_with=path + "/", delimiter="/")

它将允许我迭代 blob 存储中的顶级“目录”。

我试图在 Go 中做同样的事情,如下所示:

func getModelsHierarchy(client *azblob.Client, containerName string, directory string) {
maxResults := int32(200)
delimiter := "/"

containerClient := client.ServiceClient().NewContainerClient(containerName)
pager := containerClient.NewListBlobsHierarchyPager(delimiter, &container.ListBlobsHierarchyOptions{
Include: container.ListBlobsInclude{},
MaxResults: &maxResults,
Prefix: &directory,
})

for pager.More() {
resp, err := pager.NextPage(context.TODO())
if err != nil {
log.Fatal(err)
}
for _, blob := range resp.ListBlobsHierarchySegmentResponse.Segment.BlobItems {
fmt.Println("Adding model " + *blob.Name)
}
}
}

根据https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/storage/[email protected]/container#Client.NewListBlobsHierarchyPager处的文档我认为这应该有效。我已经使用 blob 存储和启用了层次结构的第 2 代数据湖进行了测试。我已经使用网络存储资源管理器检查了是否有文件和目录。

结果:

使用“/”作为分隔符,我没有得到任何结果。使用“_”作为分隔符,我得到所有文件。

最佳答案

如果我理解的话,您只想对目录(而不是 blob)进行迭代。正如 this discussion 中提到的,目前 Go SDK 本身不支持此功能。

REST API 通过 showonly={deleted,files,directories} 支持它URI 参数,但是 SDK 似乎没有实现此转换。我查看了代码,但找不到它,也没有找到将其侵入 REST GET 字符串变量的方法。

也许解决方法是直接使用其中一个 authentication methods 来执行 REST API 实现.

关于azure - 使用 Go 在 azure 层次结构中列出 blob 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76174152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com