[py]初始化dict结构和json.dump使用
1.json.dump使用
http://python3-cookbook.readthedocs.io/zh_CN/latest/c06/p02_read-write_json_data.html
- 针对文件
json.dump
json.load
ps:各台机器机器本地计算, os.walk根据目录算出目录下所有文件绝对路径,遍历后汇总成一个数组做处理
2.字典数据结构:使用前先初始化
- d有一级 d = {'name':[]}
d = {}
if d.get('name'):
d['name'].append('maotai')
else:
d['name'] = []
- d有两级: d = {'name':{k:[]}}
d = {}
for i in data:
if d.get(i[0]):
if d[i[0]].get(i[1]):
d[i[0]][i[1]].append(i[2])
else:
d[i[0]][i[1]] = [i[2]]
else:
d[i[0]] = {i[1]: [i[2]]}
较完善的一个例子
import os
import json
# 获取数据
def get_data():
data = []
with open('/tmp/res/res.txt') as f:
for i in f:
ip = i.split()[0]
hash_val = i.split()[1]
file_name = os.path.basename(i.split()[2])
data.append([file_name, hash_val, ip])
# print(json.dumps(data))
# 处理数据
d = {}
for i in data:
if d.get(i[0]):
if d[i[0]].get(i[1]):
d[i[0]][i[1]].append(i[2])
else:
d[i[0]][i[1]] = [i[2]]
else:
d[i[0]] = {i[1]: [i[2]]}
# print(json.dumps(d))
# 生成html
html_tmpl_start = '''
<table border='1' cellspacing="0">
<tr>
<td>file_name</td>
<td>hash</td>
<td>ip</td>
</tr>
'''
html_tmpl_file_begin = '<tr>'
html_tmpl_file = '''
<td rowspan="%s">%s</td>
'''
html_tmpl_hash = '''
<td>%s</td>
'''
html_tmpl_ip = '''
<td>%s</td>
'''
html_tmpl_ip_end = '</tr>'
html_tmpl_end = '</table>'
html_content = ''
# 统计下同一个file有几个hash
# print(d)
for k, v in d.items():
html_tmpl_file_res = ''
html_tmpl_hash_res = ''
html_tmpl_ip_res = ''
flag = 1
if len(v) > 1:
# file: k, 看hash
html_tmpl_file_res = html_tmpl_file % (len(list(v.keys())), k)
# print(html_tmpl_file_res)
# hash: k is hash,v is ip,看ip
for m, n in v.items():
if flag == 1:
html_tmpl_hash_res = html_tmpl_hash % (m)
html_tmpl_ip_res = html_tmpl_ip % (n)
tmp = html_tmpl_file_begin + html_tmpl_file_res + html_tmpl_hash_res + html_tmpl_ip_res + html_tmpl_ip_end
flag += 1
else:
html_tmpl_hash_res = html_tmpl_hash % (m)
html_tmpl_ip_res = html_tmpl_ip % (n)
tmp = html_tmpl_file_begin + html_tmpl_hash_res + html_tmpl_ip_res + html_tmpl_ip_end
html_content += tmp
content = html_tmpl_start + html_content + html_tmpl_end
return content
[py]初始化dict结构和json.dump使用的更多相关文章
- json.dump()和json.dmups()的区别
在python中支持json合适的数据是通过json模块实现的. 在序列化json数据的时候遇到两个形状很像的函数,dump()和dumps().主要说说他们的区别 先看看官方文档的说明:https: ...
- json.dumps(),json.loads(),json.dump(),json.load()方法的区别
1. json.dumps() json.dump()是将字典类型转化成字符串类型. import json dic = {'a':'1111','b':'2222','c':'3333','d':' ...
- python json.dumps() json.dump()的区别
以前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,觉得这样有种把人骗进来的感觉,于是又细化了一些.如果还有不好的地方,欢迎指出. 首先说明基本功能: dumps是将dict转化成s ...
- python中json文件处理涉及的四个函数json.dumps()和json.loads()、json.dump()和json.load()的区分
一.概念理解 1.json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串) (1)json.dumps()函数是将一个Python数据类型列表进行js ...
- json.dumps与json.dump的区别 json.loads与json.load的区别
json.dumps是将一个Python数据类型列表进行json格式的编码解析, 示例如下: >>> import json #导入python 中的json模块>>&g ...
- json.dump和json.dumps区别,json.load和json.loads的区别
dumps是将python类型(list,dict等)转化成str格式,loads是将str转化成python类型(list,dict等). dump和load也是类似的功能,只是与文件操作结合起来了 ...
- python中json.load()、json.loads()、json.dump()、json.dumps()的区别
json.load()从文件中读取json字符串 json.loads()将json字符串转换为字典类型 json.dumps()将python中的字典类型转换为字符串类型 json.dump()将j ...
- 【Python基础】json.dumps()和json.loads()、json.dump()和json.load()的区分
json文件处理涉及的四个函数json.dumps()和json.loads().json.dump()和json.load()的区分 一.概念理解 1.json.dumps()和json.loads ...
- json -- dump load dumps loads 简单对比
json.dumps是将一个Python数据类型列表进行json格式的编码解析, 示例如下: >>> import json #导入python 中的json模块>>&g ...
随机推荐
- 官方文档:Office VBA 参考
https://docs.microsoft.com/zh-CN/office/vba/api/overview/ Office VBA 参考 https://docs.microsoft.co ...
- web开发之环境配置和文件系统
web开发中有jsp,html,css,java,pictures等文件和程序,怎么组织他们,使其正确加载,是一个比较大的问题,就像一团乱麻,解不开啊.IDE是个大管家,要对它非常熟悉才可以,跟顺利地 ...
- D - Pagodas
n pagodas were standing erect in Hong Jue Si between the Niushou Mountain and the Yuntai Mountain, l ...
- EF Core 2.1变化
EF Core 2.1随.NET Core 2.1一起发布,本篇文章总结一下EF Core的新增功能,先从简单的开始说. 一.延迟加载 延迟加载不用介绍了吧,直接看一下怎样配置吧.EF Core 2. ...
- [No0000167]CPU内部组成结构及指令执行过程
计算机的基本硬件系统由运算器.控制器.存储器和输入.输出设备五大部件组成.运算器和控制器等部件被集成在一起统称为中央处理单元(Central Processing Unit,CPU). CPU的功能 ...
- goreplay,tcpcopy
流量拷贝工具试用 https://github.com/buger/goreplaynginx mirror openresty 通过lua tcpcopy 支持 HTTP 请求的录制和重放,可以在线 ...
- vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。
原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 我怕链 ...
- Java 输入/输出——处理流(ObjectIO)
Object流:直接将Object流写入或读出. TestObjectIO.java transient关键字(英文名:透明的,可以用来修饰成员变量(实例变量),transient修饰的成员变量(实例 ...
- IO密集型 计算密集型
参考:https://www.cnblogs.com/zhangyux/p/6195860.html 参考:廖雪峰 协程 gevent IO密集型任务指的是磁盘IO或者网络IO占主要的任务,计算量很小 ...
- 彻底卸载tv
1.卸载 2.C:\Program Files (x86),找到teamviewer选项,右击删除 3.开始--输入regedit,打开注册表,找到如下路径:HKEY_LOCAL_MACHINE\SO ...