• day0319 模块


    一.序列化

    将原本的字典,列表等内容转化成一个字符串的过程就是序列化。

    序列化的目的:

    1.以某种存储形式使自定义对象持久化

    2.将对象从一个地方传递到另一个地方。

    3.程序更具有维护性

    二. Json 模块

        四个功能:dumps    dump     loads      load  

    2.1  dumps 序列化:将字典转化成字符串,只完成了序列化为str

    import json
    dic={'key1':123456,'key2':'ada lace'}
    j_dic=json.dumps(dic)           #序列化:将字典转化成一个字符串
    print(j_dic,type(j_dic))
    结果:
    {"key1": 123456, "key2": "ada lace"} <class 'str'>
    #注意:json转换完的字符串类型的字典内的字符串是由“”  表示的。
    

    2.2 loads  反序列化

    import json
    dic={'key1':123456,'key2':'ada lace'}
    j_dic=json.dumps(dic)           #序列化:将字典转化成一个字符串
    print(j_dic,type(j_dic))


    #下面是loads反序列化: dic1=json.loads(j_dic) print(dic1,type(dic1)) #反序列化:将一个字符串转化成一个字典 #这里注意:要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示 结果: {"key1": 123456, "key2": "ada lace"} <class 'str'> {'key1': 123456, 'key2': 'ada lace'} <class 'dict'>

    2.3 dump :必须传文件描述符,将序列化str保存到文件中。

    a={"name":'Ada lace',"age":19,'sex':'female'}
    with open('demo.json','w',encoding='utf-8') as f:
        f.write(json.dumps(a,indent=4))      #在这里是用dumps 将文件转化成str,再用f.write写入文件
        json.dump(a,f,indent=4)              #dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件
    

    2.4 load:只接受文件描述符,完成了读取文件和反序列化。

    with open('demo.json','r',encoding='utf-8')as f:
        a=json.loads(f.read())           #将字符串转化成字典,f..read()读取文件
        f.seek(0)                        #将光标调到开头,否则下次读不到数据。
        b=json.load(f)                   #load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
    print(a)
    print(b)
    结果:
    {'name': 'Ada lace', 'age': 19, 'sex': 'female'}
    {'name': 'Ada lace', 'age': 19, 'sex': 'female'}
    

    三.pickle模块

    json:用于字符串 和 python数据类型间进行转换。 pickle:用于python特有的类型 和 python的数据类型间进行转换 。

    pickle模块提供了四个功能:dumps、dump(序列化,存)、loads(反序列化,读)、load (不仅可以序列化字典,列表...可以把python中任意的数据类型序列化)

    pickle是python特有的模块.

    如果我们将一个字典或者序列化成了一个json存在文件里,那么java代码或者js代码也可以拿来用。 但是如果我们用pickle进行序列化,其他语言就不能读懂这是什么了~

    3.1  dumps和loads 

    import pickle
    # print(pickle.dumps({'1':4}))   #将对象转换成类似二进制的东西
    # print(pickle.loads(b'x80x03}qx00Xx01x00x00x001qx01Kx04s.'))
    # 将一个堆类似于二进制的东西转换成字典
    

    3.2 dump和load

    pickle.dump({'2':4},open('b','wb'))
    d = pickle.load(open('b','rb'))
    print(d)
    

    总结:

    josn,pickle 对比
    # loads json里的将字符串转换成字典   pickle 将字节转换成字典
    # dumps json里的将字典转换成字符串 pickle 将字典转换成字节
    # load json里的将文件中的字符串转换成字典 pickle 将文件中的字节转换成字典
    # dump json里的将字典转换字符串写入到文件中,pickle 将字典转换成字节写入到文件中

    四.random模块

    random是一个随机数模块,生成一些不规范的内容。

    获取0-1之间的随机小数

    import random
    
    print(random.random())
    

      

    我们可以获取0到1之间的随机的小数,但是还能够满足你,你想要生成指定的数字内的随机小数怎么办??

    import random
    
    print(random.uniform(1,5))
    

    随机生成整数:

    import random
    
    print(random.randint(1,5))#  整数1到整数4
    

    随机生成奇数和偶数:

    import random
    
    print(random.randrange(1,5,2))   #随机生成1-5的奇数
    
    print(random.randrange(0,5,2))   #随机生成0-5的偶数
    

    choice() 方法返回一个列表,元组或字符串的随机项

    import random
    
    lst = ['张开','宝元','佩奇','太白']
    
    print(random.choices(lst,k=2))
    

    这里可能生成一样的随机项,去除随机项,我们选择sample函数

    import random
    
    lst = ['张开','宝元','佩奇','太白']
    
    print(random.sample(lst,k=2))
    

    shuffle() 方法将序列的所有元素随机排序

    import random
    
    list = [20, 16, 10, 5];
    random.shuffle(list)
    print "随机排序列表 : ",  list
    
    random.shuffle(list)
    print "随机排序列表 : ",  list
    结果:
    随机排序列表 :  [16, 5, 10, 20]
    随机排序列表 :  [16, 5, 20, 10]
    

    五.os 模块

    os模块是与操作系统交互的一个接口​

    <em>#和文件夹相关
    
    os.makedirs('dirname1/dirname2')    可生成多层递归目录
    
    os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
    
    os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
    
    os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
    
    os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
    
    ​
    

      

    # 和文件相关
    
    os.remove()  删除一个文件
    
    os.rename("oldname","newname")  重命名文件/目录
    
    os.stat('path/filename')  获取文件/目录信息
    

      

    # 和操作系统差异相关
    
    os.sep    输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
    
    os.linesep    输出当前平台使用的行终止符,win下为"
    ",Linux下为"
    "
    
    os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
    
    os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
    

      

    # 和操作系统差异相关
    
    os.sep    输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
    
    os.linesep    输出当前平台使用的行终止符,win下为"
    ",Linux下为"
    "
    
    os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
    
    os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
    

      

    # 和执行系统命令相关
    
    os.system("bash command")  运行shell命令,直接显示
    
    os.popen("bash command).read()  运行shell命令,获取执行结果
    
    os.environ  获取系统环境变量
    

     

    #path系列,和路径相关
    
    os.path.abspath(path) 返回path规范化的绝对路径 
    
    os.path.split(path) 将path分割成目录和文件名二元组返回 
    
    os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 
    
    os.path.basename(path) 返回path最后的文件名。如何path以/或结尾,那么就会返回空值,即os.path.split(path)的第二个元素。
    
    os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
    
    os.path.isabs(path)  如果path是绝对路径,返回True
    
    os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
    
    os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
    
    os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
    
    os.path.getatime(path)  返回path所指向的文件或者目录的最后访问时间
    
    os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
    
    os.path.getsize(path) 返回path的大小<br></em>
    

    六.sys 模块

    sys模块是与python解释器交互的一个接口

    sys.argv           命令行参数List,第一个元素是程序本身路径
    
    sys.exit(n)        退出程序,正常退出时exit(0),错误退出sys.exit(1)
    
    sys.version        获取Python解释程序的版本信息
    
    sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
    
    sys.platform       返回操作系统平台名称
    

      

  • 相关阅读:
    HBase的Snapshots功能介绍
    Java 向Hbase表插入数据报(org.apache.hadoop.hbase.client.HTablePool$PooledHTable cannot be cast to org.apac)
    独立搭建zookeeper
    zookeeper原理
    Hbase 配置问题(ERROR: org.apache.hadoop.hbase.PleaseHoldException: org.apache.hadoop.hbase.PleaseHoldEx)
    vmware时间不同步的问题
    Hadoop Error:Name node is in safe mode的解决方法
    Hadoop集群的安装与配置(centos 6.5)
    WIN7 数据源配置问题(32位&&64位)
    JS禁用浏览器退格键
  • 原文地址:https://www.cnblogs.com/Zhao159461/p/10560214.html
Copyright © 2020-2023  润新知