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)
  • 相关阅读:
    算法训练 P1103
    算法训练 表达式计算
    算法训练 表达式计算
    基础练习 时间转换
    基础练习 字符串对比
    Codeforces 527D Clique Problem
    Codeforces 527C Glass Carving
    Codeforces 527B Error Correct System
    Codeforces 527A Glass Carving
    Topcoder SRM 655 DIV1 250 CountryGroupHard
  • 原文地址:https://www.cnblogs.com/snackpython/p/10147381.html
Copyright © 2011-2022 走看看