• 序列化模块


    序列化

    序列:字符串

    序列化:其他类型抓换为字符串

     

     

    为什么要转换为字符串:

    1:数据存入文件,只能是二进制,或者文本,

    2:基于网络传输的数据

     

     

    什么数据能转为二进制?

    只有字符串

     

     

    序列化:其他数据类型转为字符串

    反序列化:字符串转换为其他类型

     

     

    这个方法太局限化,这个只能在py中使用:
    
    d = [1,2,3,4]
    d = str(d)
    eval(d)

     

     

    你有一个数据,想把它变成字符串放入文件,

    你拿出这个数据的时候,他还能变回来

    别的语言,也能解读,并且解读为对应的数据类型

     

    json模块

    json模块(**)(跨语言)

    所有语言都支持json格式

    就相当于各个国家的翻译

    (支持的数据类型很少)

    字符串

    列表

    字典

    整型

    浮点型

    布尔值

    元组 (不是所有数据类型都有,他会转换为列表)

     

     

    pickle模块

    pickle模块()(不能跨语言)

    只能python

    python所有的数据类型都支持


     json

    ##################################
    
    # dumps loads
    
    d = {'name':'jason'}
    
    # d = {"name":"jason"} # python会给你转换为单引号字符串
    
    print(d)
    
    res = json.dumps(d) # json格式的字符串 不显示双引号
    
    print(res,type(res))
    
     
    
    res1 = json.loads(res)
    
    print(res1,type(res1))
    
     
    
     
    
    ##################################
    
    # dump load
    
    结合文件一起使用
    
    直接转换为字符串,然后直接保存到文件中
    
     
    
    d = {'name':'jason'}
    
     
    
    ########## 写入
    
    with open('xuliehuatest.txt','w',encoding='utf-8') as f:
    
    json.dump(d,f) # 转为字符串,然后自动写入文件
    
    # d 是需要写入的数数据,f是写入的文件
    
     
    
    ########## 读取
    
    with open('xuliehuatest.txt','r',encoding='utf-8') as f:
    
    res = json.load(f)
    
    # res是读在哪,f是读取的文件
    
    print(res)
    
     
    
     
    
     
    
    写入多份份数据
    
     
    
    #########################################################################
    
    # 不可行
    
    with open('xuliehuatest.txt','w',encoding='utf-8') as f:
    
    json.dump(d,f) # 转为字符串,然后自动写入文件
    
    json.dump(d,f) # 转为字符串,然后自动写入文件
    
     
    
    with open('xuliehuatest.txt','r',encoding='utf-8') as f:
    
    # res = json.load(f)
    
    # res = json.load(f)
    
    # print(res)
    
    pass
    
    ##########################################################################
    
     
    
     
    
     
    
     
    
    ############ 15:23##########没对
    
    with open('xuliehuatest.txt','w',encoding='utf-8') as f:
    
    json_str = json.dumps(d)
    
    json_str1 = json.dumps(d)
    
    f.write('%s
    '%json_str)
    
    f.write('%s
    '%json_str1)
    
     
    
    with open('xuliehuatest.txt','r',encoding='utf-8') as f:
    
    for line in f:
    
    res = json.dumps(line)
    
    print(res)
    
     
    
     
    
     
    
    # 关于转码
    
    d1 = {'name':'我是'}
    
    print(json.dumps(d1,ensure_ascii=False)) # 不会转码
    
    print(json.dumps(d1)) # 会转码
    
     
    
    
    
    '''

    pickle

     

    # pickle
    
    import pickle
    
    '''
    
    用pickle操作文件的时候,文件打开模式必须是b模式
    
     
    
    '''
    
     
    
     
    
    d = {'name':'pslcy'}
    
     
    
    # res = pickle.dumps(d) # 会将对象转换为二进制
    
    # print(res)
    
    # print(pickle.dumps(d))
    
    #
    
    # res1 = pickle.loads(res)
    
    # print(res1,type(res1))
    
     
    
    # with open('xuliehuatest2.txt','w',encoding='utf-8') as f:
    
     
    
    with open('xuliehuatest2.txt','wb') as f:
    
    pickle.dump(d,f)
    
     
    
     
    
    with open('xuliehuatest2.txt','rb') as f:
    
    res1 = pickle.load(f)
    
    print(res1,type(res1))
  • 相关阅读:
    Thread系列之WaitHandle
    C# lock,Monitor 介绍(多线程并发控制)
    C#多线程学习(五) 多线程的自动管理(定时器)
    Thread系列之AutoResetEvent
    Thread系列之Thread.Sleep(0)
    (转)Java 内存模型
    哈希表(一)
    Java GC
    哈希表(二)
    图(一)
  • 原文地址:https://www.cnblogs.com/pscly/p/11210279.html
Copyright © 2020-2023  润新知