zoukankan      html  css  js  c++  java
  • 将目录结构输出为json格式(zTree)

    # -*- coding: UTF-8 -*-
    import json,os
    
    path = 'E:\BACKUP'
    
    #返回空目录
    def path_to_dict(path):
        d = {'name': os.path.basename(path)}
        if os.path.isdir(path):
            d['type'] = "directory"
            d['children'] = [path_to_dict(os.path.join(path,x)) for x in os.listdir(path)]
        else:
            d['type'] = "file"
        return d
    
    print json.dumps(path_to_dict(path),ensure_ascii=False, indent=2)
    
    
    #空目录不返回
    def path_to_dict(path, my_string=None):
        d = {'name': os.path.basename(path)}
        if os.path.isdir(path):
            d['type'] = "directory"
            d['children'] = []
            paths = [os.path.join(path,x) for x in os.listdir(path)]
            for p in paths:
                c = path_to_dict(p, my_string)
                if c is not None:
                    d['children'].append(c)
            if not d['children']:
                return None
        else:
            d['type'] = "file"
        return d
    
    print(json.dumps(path_to_dict('E:\BACKUP'),ensure_ascii=False, indent=2))

    实例:将目录转换为zTree使用的json字符串格式

    def path_to_dict_filepath(path):
        d = {'name': os.path.basename(path)}
        print path
        if os.path.isdir(path):
            d['type'] = "directory"
            d['children'] = [path_to_dict_filepath(os.path.join(path,x)) for x in os.listdir(path)]
        else:
            d['type'] = "file"
            d['filepath'] = path
        d['nocheck'] = True
        return d
    
    print json.dumps(path_to_dict_filepath(path),ensure_ascii=False)

    返回值::

    {"nocheck": true, "type": "directory", "name": "BACKUP", "children": [{"nocheck": true, "type": "directory", "name": "hr-201.9-dbbackup", "children": [{"nocheck": true, "type": "file", "name": "uxinhr.bak"}, {"nocheck": true, "type": "file", "name": "zknet10.bak"}]}, {"nocheck": true, "type": "file", "name": "rsyncd - 副本.rar"}, {"nocheck": true, "type": "file", "name": "部署系统-websites-20160113.rar"}]}

    From http://stackoverflow.com/questions/27661247/getting-json-tree-of-folders-and-files-but-only-with-files-containing-given-str

  • 相关阅读:
    文章标题
    PAT Basic Level 1006
    PAT Basic Level 1005
    PAT Basic Level 1004
    PAT Basic Level 1036
    PAT Basic Level 1002
    (算法)递归各习题总结反思 *基础
    uvaoj 101
    C语言(关于二级指针)
    普通算法(高效幂运算)
  • 原文地址:https://www.cnblogs.com/dreamer-fish/p/5607786.html
Copyright © 2011-2022 走看看