是否可以使用 Azure 存储在目录中列出文件

Is it possible to list files in a dir with Azure storages

我使用 Django 和 django-storages[azure] 作为后端。 但是我找不到列出文件的目录,而是必须使用这样的片段:

block_blob_service.list_blobs(container_name='media', prefix=folderPath)]

这不起作用:

listdir(absoluteFolderPath)

在storages/backend/azure_storage.py中我找到了这部分:

def listdir(self, path=''):
        """
        Return directories and files for a given path.
        Leave the path empty to list the root.
        Order of dirs and files is undefined.
        """
        files = []
        dirs = set()
        for name in self.list_all(path):
            n = name[len(path):]
            if '/' in n:
                dirs.add(n.split('/', 1)[0])
            else:
                files.append(n)
        return list(dirs), files

但是我该如何使用呢?

问候 克里斯托弗.

假设您已设置 DEFAULT_FILE_STORAGE you could access it through storage

from django.core.files.storage import default_storage
dirs = default_storage.listdir(absoluteFolderPath)

正在运行,谢谢,但我得到了一个列表:

[[], ['ANG_65096745.pdf', 'airpods-gave.png', 'miniDP_HDMI.png', 'surface-book-2-13-in-laptop-mode-device-render.jpg', 'surface_4_color.png']]

如何在 for 循环中使用它?我做了这个:

files = default_storage.listdir(path=folderPath)
   for file in files:
   print(file)

但它不会逐行打印我写的输出

API for listdir returns 两个列表的元组,第一个是给定路径中的目录(文件夹),第二个是文件。

解压缩的正确方法是在调用期间分配两个变量。

示例:

from django.core.files.storage import default_storage

# list the contents of the root directory of the storage
directories, files = default_storage.listdir('')

# list the contents of a directory named 'images' inside 'media'
directories, files = default_storage.listdir('media/images')

# now you can iterate through just the files
for filename in files:
    print(filename)

我将 django-storages 与 S3 一起使用,但 Azure 看起来工作起来完全一样。