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使用的更多相关文章

  1. json.dump()和json.dmups()的区别

    在python中支持json合适的数据是通过json模块实现的. 在序列化json数据的时候遇到两个形状很像的函数,dump()和dumps().主要说说他们的区别 先看看官方文档的说明:https: ...

  2. json.dumps(),json.loads(),json.dump(),json.load()方法的区别

    1. json.dumps() json.dump()是将字典类型转化成字符串类型. import json dic = {'a':'1111','b':'2222','c':'3333','d':' ...

  3. python json.dumps() json.dump()的区别

    以前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,觉得这样有种把人骗进来的感觉,于是又细化了一些.如果还有不好的地方,欢迎指出. 首先说明基本功能: dumps是将dict转化成s ...

  4. python中json文件处理涉及的四个函数json.dumps()和json.loads()、json.dump()和json.load()的区分

    一.概念理解 1.json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串) (1)json.dumps()函数是将一个Python数据类型列表进行js ...

  5. json.dumps与json.dump的区别 json.loads与json.load的区别

    json.dumps是将一个Python数据类型列表进行json格式的编码解析, 示例如下: >>> import json #导入python 中的json模块>>&g ...

  6. json.dump和json.dumps区别,json.load和json.loads的区别

    dumps是将python类型(list,dict等)转化成str格式,loads是将str转化成python类型(list,dict等). dump和load也是类似的功能,只是与文件操作结合起来了 ...

  7. python中json.load()、json.loads()、json.dump()、json.dumps()的区别

    json.load()从文件中读取json字符串 json.loads()将json字符串转换为字典类型 json.dumps()将python中的字典类型转换为字符串类型 json.dump()将j ...

  8. 【Python基础】json.dumps()和json.loads()、json.dump()和json.load()的区分

    json文件处理涉及的四个函数json.dumps()和json.loads().json.dump()和json.load()的区分 一.概念理解 1.json.dumps()和json.loads ...

  9. json -- dump load dumps loads 简单对比

    json.dumps是将一个Python数据类型列表进行json格式的编码解析, 示例如下: >>> import json #导入python 中的json模块>>&g ...

随机推荐

  1. 通过JVM 参数 实现spring 应用的二进制代码与配置分离。

    原创文章,转载请注明出处 分离的好处就不说了.说下分离的思路.通过JVM 参数-D 添加 config.path 的property 到系统中.系统通过System.getProperty(confi ...

  2. cmake构建时指定编译器架构(x86 or x64)

    vs2015 x64编译器为例,cmake命令如下: cmake -G "Visual Studio 14 Win64" path\to\source\dir 去掉Win64,就是 ...

  3. Python零基础入门学习 作者:小甲鱼

    temp = input('不妨想一想小甲鱼现在心里想的哪一个数字:') guess = int(temp) if guess == 8: print('你是小甲鱼心里的蛔虫吗?') print('哼 ...

  4. 局域网里别人如何访问我本地电脑里的nginx网站

    1.修改nginx.conf配置文件(我这里配了二级域名,所以我在二级域名配置文件修改) 把deny all全部改成autoindex on 2.关闭防火墙 3.重启nginx

  5. scala 可变集合与内存清理的关系

    留坑待填 使用scala.collection.mutable._期间,发现了当程序运行内存开销较多时,使用系统工具进行内存清理,然后程序报出了变量找不到.内存无法访问.数组访问越界,堆栈溢出等多种错 ...

  6. 170828、Eclipse Java注释模板设置详解以及版权声明

    编辑注释模板的方法:Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是所有需设置注释的元素 ...

  7. MongoDB数据库连接失败

    win10下原来一直在用的MongoDB突然连接不上了,报错如下: 解决方法是:net start MongoDB重启服务

  8. 移动端H5混合开发,Touch触控,拖拽,长按, 滑屏 实现方案

    概述 近期由于产品快速原型开发的需要,不想用原声的方式开发App两端一起搞时间来不及,目前产品处于大量上feature的阶段,采用混合开发是最合适的选择,所以花了3天的时间研究怎么去实现移动端,拖拽, ...

  9. df

    hdu 1052 Tian Ji -- The Horse Racing (2011-08-26 08:32:51) 转载▼ 标签: 杂谈 分类: acm杂谈 Tian Ji -- The Horse ...

  10. CentOs7下搭建LAMP环境

    ● 环境搭建 参考: http://blog.csdn.net/zph1234/article/details/51248124 http://www.jb51.net/os/188488.html ...