zoukankan      html  css  js  c++  java
  • python day28--json,pickle,hashlib,logging

    一、json格式的限制

    1.json格式的key必须是字符串数据类型,如果是数字dumps后会被转为字符串。

    # dic = {1:2,3:4}
    # str_dic = json.dumps(dic)
    # print(str_dic)
    # new_dic = json.loads(str_dic)
    # print(new_dic)

    2.元组可以作为vaule但会被转为列表,并且不能作为key

    3.可以多次将数据dump进文件,但不能load出来。

    # dic = {'abc':(1,2,3)}
    # lst = ['aaa',123,'bbb',12.456]
    # with open('json_demo','w') as f:
    #     json.dump(lst,f)
    #     json.dump(dic,f)
    # with open('json_demo') as f:
    #     ret = json.load(f)
    #     print(ret)
    #报错

     4.想多次dump并load出来

    dic = {'abc':(1,2,3)}
    lst = ['aaa',123,'bbb',12.456]
    with open('json_demo','w') as f:
        str_lst = json.dumps(lst)
        str_dic = json.dumps(dic)
        f.write(str_lst+'
    ')
        f.write(str_dic+'
    ')
    
    with open('json_demo') as f:
        for line in f:
            ret = json.loads(line)
            print(ret)

    二、pickl

    1.dump的结果是bytes,dump用的f文件句柄需要以wb的形式打开,load所用的f是'rb'模式

    2.pickle支持几乎所有对象的

    把对象写入,及读出

    # class Student:
    #     def __init__(self,name,age):
    #         self.name = name
    #         self.age = age
    #
    # alex = Student('alex',83)
    # ret = pickle.dumps(alex)
    # 小花 = pickle.loads(ret)
    # print(小花.name)
    # print(小花.age)
    
    # class Student:
    #     def __init__(self,name,age):
    #         self.name = name
    #         self.age = age
    #
    # alex = Student('alex',83)
    # with open('pickle_demo','wb') as f:
    #     pickle.dump(alex,f)
    # with open('pickle_demo','rb') as f:
    #     旺财 = pickle.load(f)
    #     print(旺财.name)

    三、hashlib

    1.

    # 能够把 一个 字符串 数据类型的变量
    # 转换成一个 定长的 密文的 字符串,字符串里的每一个字符都是一个十六进制数字
    背下来
    # md5_obj = hashlib.md5()#或者sha1等
    # md5_obj.update(s1.encode('utf-8'))#encode必须要
    # res = md5_obj.hexdigest()
    # print(res,len(res),type(res))

    2.动态加盐,更加安全

    # username = input('username : ')
    # passwd = input('password : ')
    # md5obj = hashlib.md5(username.encode('utf-8'))
    # md5obj.update(passwd.encode('utf-8'))
    # print(md5obj.hexdigest())

    3.文件一致性检验

    # md5_obj = hashlib.md5()
    # with open('5.序列化模块_shelve.py','rb') as f:
    #     md5_obj.update(f.read())
    #     ret1 = md5_obj.hexdigest()
    #
    # md5_obj = hashlib.md5()
    # with open('5.序列化模块_shelve.py.bak','rb') as f:
    #     md5_obj.update(f.read())
    #     ret2 = md5_obj.hexdigest()
    # print(ret1,ret2)
  • 相关阅读:
    [转]easyui data-options的使用
    HTML5新事物
    jQuery checkbox相关
    mybatis insert前获取要插入的值
    mybatis获得刚刚插入的自增的值
    MySQL 获得当前日期时间(以及时间的转换)
    Linux dirname $0 source if
    CCS
    Linux compress & uncompress
    Programming In Scala Reading Note 8
  • 原文地址:https://www.cnblogs.com/snackpython/p/10147381.html
Copyright © 2011-2022 走看看