为何list_blobs返回虚拟目录?如何排除虚拟目录结果?
Azure Blob Storage list_blobs 返回虚拟目录问题解答
认知偏差还是行为变更?
Azure Blob Storage的虚拟目录是通过Blob名称中的/分隔符模拟的,并非真实存在的目录资源。list_blobs方法默认会返回虚拟目录的占位符条目(如你看到的dir0/dir1),这是该接口的标准默认行为——可能你之前使用时通过隐式参数过滤,或是旧版SDK默认不返回这类条目,但当前的标准行为确实包含虚拟目录占位符。
过滤虚拟目录的方法
方法1:通过Blob属性过滤
遍历结果时,检查Blob对象的is_directory属性(部分SDK版本可能用blob_type判断是否为DIRECTORY类型),仅保留非目录的Blob文件:
blobs = blob_service_client.list_blobs('container', 'dir0/') for blob in blobs: if not blob.is_directory: print(blob.name)
方法2:调用时指定过滤参数
部分SDK版本支持在调用list_blobs时通过include参数明确指定只返回Blob文件,排除虚拟目录:
blobs = blob_service_client.list_blobs('container', 'dir0/', include=['blobs']) for blob in blobs: print(blob.name)
注意:不同语言SDK或同一SDK的不同版本,参数和属性名称可能略有差异,建议对照当前使用的SDK文档确认细节。
内容的提问来源于stack exchange,提问作者bcbishop
相关产品推荐
相关产品推荐

