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. sencha touch Model validations 自定义验证 二选一输入验证、重复验证、时间验证、比较验证、条件验证(2015-1-14)

    项目初始化时执行以下代码 //重写模型,方便进行自定义验证 Ext.define("Ext.zh.data.Model", { override: "Ext.data.M ...

  2. R和Tableau平行坐标图

    R平行坐标图 library(lattice)data(iris)parallelplot(  ~ iris[1:4],  iris,  groups = Species,  horizontal.a ...

  3. ModelAttribue注解的使用

    Spring中有很多注解,如RequestParam,PathVarible,SesstionAttribute,这些在开发是多尝试一下,可能用得到,ModelAttribute用的还挺多,可以以此为 ...

  4. Solr7.4.0的API(Solrj)操作及项目中的使用

    一.SolrJ的概念 solr单机版服务搭建:https://www.cnblogs.com/frankdeng/p/9615253.html solr集群版服务搭建:https://www.cnbl ...

  5. JAVA学习资源整理

    构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...

  6. Centos下磁盘管理---分区

        1.磁盘分区格式说明 linux分区不同于windows,linux下硬盘设备名为(IDE硬盘为hdx(x为从a—d)因为IDE硬盘最多四个,SCSI,SATA,USB硬盘为sdx(x为a—z ...

  7. 用工厂模式解决ASP.NET Core中依赖注入的一个烦恼

    这是最近在实际开发中遇到的一个问题,用 asp.net core 开发一个后端 web api ,根据指定的 key 清除 2 台 memcached 服务器上的缓存.背景是我们在进行 .net co ...

  8. ubuntu16.04下安装opencv3.4.1及其扩展模块

    1.源文件下载 opencv-3.4.1.tar.gz(https://github.com/opencv/opencv/releases) opencv_contrib-3.4.1.tar.gz(h ...

  9. Codeforces 44E - Anfisa the Monkey - [水题]

    题目链接:http://codeforces.com/problemset/problem/44/E 题意: 给一个字符串,让你分割成 $k$ 行,每行的字母数在 $[a,b]$ 之间. 题解: 这是 ...

  10. 两种Python基于OpenCV的固定位置半透明水印去除方案

    1. 基于 inpaint 方法(网上的方法,处理质量较低) 算法理论:基于Telea在2004年提出的基于快速行进的修复算法(FMM算法),先处理待修复区域边缘上的像素点,然后层层向内推进,直到修复 ...