zoukankan      html  css  js  c++  java
  • python json,pickle模块

    json模块

    不同语言间的数据交互

    eval方法可以将一个字符串转成python对象,但eval方法是有局限性,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型(函数、类等)的时候,eval就不管用了,因此eval通常用来执行一个字符串表达式,并返回表达式的值。

    dic='{"name":"alex"}'
    f=open('hello','w')
    f.write(dic)
    
    #eval方法将字符串转换为python的数据类型
    f_read=open('hello','r')
    data=f_read.read()
    print(data)
    print(eval(data)['name'])

    json.dumps()将对象转换为json类型的字符串

    json.loads()将json类型的字符串解析成解释器对应的数据类型

    import json
    
    
    dic={"name":"alex"}
    
    # #将对象(无论什么类型)转化为json字符串,将字符串的引号变为双引号
    # data=json.dumps(dic)
    # print(data)
    # print(type(data))
    #
    # f=open('new_hello','w')
    # f.write(data)
    
    f_read=open('new_hello','r')
    read_data=json.loads(f_read.read())
    print(read_data)
    print(type(read_data))

    json.dump(data,f)相当于json.dumps(data)+f.write(data)

    json.load(f_read)相当于json.loads()+f_read.read()

    json.dumps()与json.loads()无需成对使用,只要符合json字符串的格式即可以用json.loads()方法

    pickle模块

    将对象转换为字节形式,与json模块的方法完全类似,只不过读写文件的形式为二进制'wb','rb'形式读写

    #序列化
    import pickle
     
    dic={'name':'alvin','age':23,'sex':'male'}
     
    print(type(dic))#<class 'dict'>
     
    j=pickle.dumps(dic)
    print(type(j))#<class 'bytes'>
     
     
    f=open('序列化对象_pickle','wb')#注意是w是写入str,wb是写入bytes,j是'bytes'
    f.write(j)  #-------------------等价于pickle.dump(dic,f)
     
    f.close()
    #-------------------------反序列化
    import pickle
    f=open('序列化对象_pickle','rb')
     
    data=pickle.loads(f.read())#  等价于data=pickle.load(f)
     
     
    print(data['age'])

    1

  • 相关阅读:
    每天拿出来2小时浪费(文/王路) 作者: 王路
    objective-c自学总结(二)---init/set/get方法
    objective-c自学总结(一)---面向对象
    水仙花数
    独木舟上的旅行
    阶乘之和
    小明的调查统计
    管闲事的小明
    重温《STL源码剖析》笔记 第一章
    重温《STL源码剖析》笔记 第三章
  • 原文地址:https://www.cnblogs.com/Manuel/p/10885354.html
Copyright © 2011-2022 走看看