# -*- 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

将目录结构输出为json格式(zTree)的更多相关文章

  1. PHP中把数据库查询结果输出为json格式

    <?php header("Content-type:text/html;charset=utf-8");//字符编码设置 $servername = "local ...

  2. 前端技术之:如何在控制台将JS class实例输出为JSON格式

    有一个类: class Point { constructor(x, y) { this.x = x; this.y = y; } } 如果我们在控制台中输出其实例: console.log(new ...

  3. nginx日志输出配置json格式

    修改nginx配置文件 http { include mime.types; default_type application/octet-stream; charset utf-8; # 原有日志格 ...

  4. wcf接口输出为json格式

    接口定义: [OperationContract] [WebInvoke(UriTemplate = "AddTask?taskId={taskId}&processGuid={pr ...

  5. Spring MVC 学习笔记 json格式的输入和输出

    Spring mvc处理json需要使用jackson的类库,因此为支持json格式的输入输出需要先修改pom.xml增加jackson包的引用 <!-- json --> <dep ...

  6. elk-nginx输出json格式的日志

    把Nginx日志的格式输出成JSON格式展示在Kibana面板,生产环境中基本都是这么使用. 1, 配置nginx 主要修改nginx的访问日志格式,这里定义成json格式,以便后面logstash更 ...

  7. 接口调用,输出结果为Json格式(ConvertTo-Json),提交参数给URL(WebRequest)

    1.直接输出为json格式: Get-Process -Id $pid | ConvertTo-Json | clip.exe 2.自定义结果为json格式: $serverinfoj = @&quo ...

  8. ELK之nginx日志使用json格式输出

    json Nginx默认日志输出格式为文本非json格式,修改配置文件即可输出json格式便于收集以及绘图 修改nginx配置文件添加配置,增加一个json输出格式的日志格式 log_format a ...

  9. Maven项目配置Logback输出JSON格式日志

    最近,项目提出需求,日志需要固定输出为JSON格式,以便后端Flink程序解析. 项目背景 项目为简单的Maven项目,日志由Filebeat采集,因此不需要配置输出至Logstash. 下面为pom ...

随机推荐

  1. postgresql 常用命令

    普通用法: sudo su - postgres 切换到postgres用户下: psql -U user -d dbname 连接数据库, 默认的用户和数据库是postgres \c dbname ...

  2. div或其他html控件的overflow使用滚动条

    在编写html代码时, 有时候不想把控件撑大,滚动条就是个不错的选择 如下代码 <div style="height:auto !important;max-height:58px;o ...

  3. MathType试用期到了如何继续用

    1,卸载原来的MathType(不知道需不需要,其实删不删应该无所谓吧) 2,删除注册表中的一个值(不是默认,而是另外一个值) HKEY_CURRENT_USER\Software\Install O ...

  4. JavaScrip t对象和 JSON 数据格式转换

    <script> //定义一个js对象 var person = { firstName: "John", lastName: "Doe", age ...

  5. Tomcat学习总结(8)——Tomcat+Nginx集群解决均衡负载及生产环境热部署

    近日,为解决生产环境热部署问题,决定在服务器中增加一个tomcat组成集群,利用集群解决热部署问题. 这样既能解决高并发瓶颈问题,又能解决热部署(不影响用户使用的情况下平滑更新生产服务器)问题. 因为 ...

  6. Python后端相关技术/工具栈

    编辑器 最常见: vim / SublimeText2 / PyCharm Vim有兴趣可以看看 k-vim 适合Python/Golang开发 本地环境 pip/easy_install 包管理 v ...

  7. 熟悉DAO模式的用法

    今天主要是使用DAO模式. DAO模式通过对业务层提供数据抽象层接口,实现了以下目标: 1. 数据存储逻辑的分离 通过对数据访问逻辑进行抽象,为上层机构提供抽象化的数据访问接口.业务层无需关心具体的s ...

  8. MFC获取系统信息

    一.获取系统时间 CString str,str2; CTime time; time = CTime::GetCurrentTime(); str = time.Format("%Y年%m ...

  9. Can you find it?(数组+二分hdu2141)

    Can you find it? Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/10000 K (Java/Others ...

  10. 山东省第四届acm解题报告(部分)

    Rescue The PrincessCrawling in process... Crawling failed   Description Several days ago, a beast ca ...