是否有操作系统方法来生成特定目录的dictional=={“folder”:[''sub\u folder”,“file1”,“file2”…]}?

2024-10-02 12:28:33 发布

您现在位置:Python中文网/ 问答频道 /正文

class Directory_info:
    directory = None

    def __init__(self, path):
        '''
        Walks Through the predetermined directory and uses built-in os methods to check if item is file or directory
        '''
        directory = path
        item_list = os.listdir(directory) #generates a list of items present in the predetermined directory
        files = []
        dirs = []
        dict={}
        for x in item_list:
            path = os.path.join(directory, x) #yields the path of the current item
            if os.path.isfile(path):          #checks if the current item is a file using it's path
                files.append(x)
            else:
                dirs.append(x)
        print "Files:\n"+str(files)
        print "Directories:\n"+str(dirs)

此代码从目录生成两个列表:
1) 文件
2) 文件夹

我需要一个解决办法,可以给我一个字典格式的目录树


Tags: ofthepathinifisosfiles
1条回答
网友
1楼 · 发布于 2024-10-02 12:28:33
import os

def get_directory_structure(rootdir):
    """
    Creates a nested dictionary that represents the folder structure of rootdir
    """
    dir = {}
    rootdir = rootdir.rstrip(os.sep)
    start = rootdir.rfind(os.sep) + 1
    for path, dirs, files in os.walk(rootdir):
        folders = path[start:].split(os.sep)
        subdir = dict.fromkeys(files)
        parent = reduce(dict.get, folders[:-1], dir)
        parent[folders[-1]] = subdir
    return dir

结果:

{
    "root": {
        "folder2": {
            "item2": None, 
            "item1": None
        }, 
        "folder1": {
            "subfolder1": {
                "item2": None, 
                "item1": None
            }, 
            "subfolder2": {
                "item3": None
            }
        }
    }
}

Source

相关问题 更多 >

    热门问题