• Python内置模块


    Python内置模块-序列化

    为什么要序列化:

    ​ 数据在程序与网络中操作数据时,需要以更加方便的形式进行存储和传输

    系统内置模块

    系统内置模块就是安装python解释器后,系统提供的模块

    使用时需要导入包后使用

    序列化模块

    序列化:可以把python中的数据使用文本或者二进制的方式进行转换

    反序列化:将文本二进制序列化的内容还原

    pickle:二进制化模块,只在python中适用

    json:文本序列化

    pickle序列化

    import pickle
    """
    pickle模块提供的函数
        dumps() 序列化,可以把python的任意对象进行序列化成二进制
        loads() 反序列化,将序列化二进制的数据还原
        domp()  序列化,将数据对象序列化后写入文件
        load()  反序列化,将序列化数据从文件读取出后进行反序列化
    """
    # pickle.dumps() 二进制序列化
    vars='i love python'
    res=pickle.dumps(vars)
    print(res) # b'\x80\x04\x95\x11\x00\x00\x00\x00\x00\x00\x00\x8c\ri love python\x94.'
    # pickle.loads() 二进制反序列化
    res1=pickle.loads(res)
    print(res1) # i love python
    
    # 把字符串序列化后写入文件
    vars='i love python'
    res=pickle.dumps(vars)
    # wb w写入,b二进制方式
    with open('./txt/5.txt','wb') as fp:
        fp.write(res)
    # 读取序列化文件并反序列化
    with open('./txt/5.txt','rb') as fp:
        res=pickle.loads(fp.read())
        print(res) # i love python
    # 使用pickle方法读写
    # 写入序列化文件
    vars={'name':'python','age':'4','sex':'m'}
    with open('./txt/5.txt','wb') as fp:
        pickle.dump(vars,fp)
    # 读取序列化文件
    with open('./txt/5.txt','rb') as fp:
        res=pickle.load(fp)
        print(res) # {'name': 'python', 'age': '4', 'sex': 'm'}
    

    json序列化

    # json.dump()序列化写入文件
    vars={'name':'python','age':'4','sex':'m'}
    with open('./txt/6.txt','w') as fp:
        json.dump(res,fp)
    # json.load()序列化读取文件
    with open('./txt/6.txt','r') as fp:
        res=json.load(fp)
        print(res,type(res)) # {'name': 'python', 'age': '4', 'sex': 'm'} <class 'dict'>
    

    数学模块Math

    # 数学模块Math
    import math
    
    # math.celi()向上取整
    res = math.ceil(1.32)
    print(res)  # 2
    res = round(1.32)  # 四舍五入
    print(res)  # 1
    
    # math.floor() 向下取整
    res = math.floor(1.99)
    print(res)  # 1
    
    # math.pow() 计算数值的N次方
    res = math.pow(3, 2)
    print(res)  # 9.0
    
    # math.sqrt() 开方运算
    res = math.sqrt(9)
    print(res)  # 3.0
    
    # math.fabs() 计算绝对值
    res = math.fabs(-1)
    print(res)  # 1.0
    
    # math.modf() 将数值拆分成小数和整数,并返回元组
    res = math.modf(1.1)
    print(res)  # (0.10000000000000009, 1.0)
    
    # math.copysign(x,y) 将y的正负号赋值到y
    res = math.copysign(1, -3)
    print(res)  # -1.0
    
    # math.fsum() 将容器类型数据元素进行求和运算
    vars = [1, 2, 3, 4, 5, 6]
    res = math.fsum(vars)
    print(res)  # 21.0
    

    随机模块Random

    # 随机模块
    import random
    
    # random.random() 返回0-1之间的随机数(左闭右开)
    res = random.random()  # 0.218585409070172
    print(res)
    
    # random.randrange(x,y,[z]) 随机获取x到y之间的整数,步进为z,左闭右开
    res = random.randrange(1, 10, 2)  # 1-3-5-7-9
    print(res)
    res = random.randrange(1, 10)
    print(res)
    res = random.randrange(10)
    print(res)
    
    # random.randint() 随机产生指定范围内的整数,和randrange()相同
    res = random.randint(1, 9)
    print(res)
    
    # random.uniform()获取随机小数
    res = random.uniform(1, 3)
    print(res)
    
    # random.choice() 随机获取容器中的值
    res = random.choice('123')
    print(res)
    res = random.choice([1, 2, 3])
    print(res)
    
    # random.shuffle() 随机打乱当前列表中的值
    varlist = [1, 2, 3, 4, 5, 6, 7]  # [1, 3, 5, 4, 7, 6, 2]
    random.shuffle(varlist)
    print(varlist)
    

    操作系统接口模块

    OS模块

    # 系统接口模块OS
    import os
    
    # os.getcwd()获取脚本当前运行的工作路径
    res = os.getcwd()
    print(res)  # F:\pythons
    
    # os.chdir()修改当前的工作目录
    os.chdir('D:')
    res = os.getcwd()
    print(res)  # D:\
    
    # os.listdir()获取路径下的文件名称返回一个列表
    res = os.listdir('D:')
    print(
        res)  # ['$RECYCLE.BIN', '.temp', '360', 'adb', 'AndroidSDK', 'apache-ant', 'apache-maven-3.6.3', 'appium', 'APPScan',
    
    # os.mkdir() 创建文件夹,默认创建在当前python运行的目录下
    os.mkdir('python创建的文件夹')
    # os.mkdir('D:', 777)
    
    # os.rmdir() 删除空文件夹,目录无法删除
    res = os.rmdir('python创建的文件夹')
    # os.removedirs递归删除空文件夹
    # os.mkdir('a')
    # os.mkdir('a/b')
    # os.removedirs('a/b')
    
    #  os.remove删除文件
    with open('a.txt', 'w') as fp:
        fp.write('1')
    os.remove('a.txt')
    
    # os.rename()修改文件或文件夹名称
    # os.mkdir('A')
    # os.rename('A', 'aaaaa')
    res = os.listdir('D:')
    print(res)
    print('aaaaa' in res)
    
    # os.system(),执行操作系统命令
    res = os.system('ls')
    print(res)
    
    # os.path.abspath() 将相对路径转为绝对路径
    res = os.path.abspath('./')
    print('绝对路径', res)  # 绝对路径 D:
    
    # os.path.basename() # 获取路径中的主体部分
    res = os.path.basename('D:/A/1.txt')
    print(res)  # 1.txt 获取文件夹中最后一个文件或者文件夹
    
    # os.path.dirname() 获取绝对路径的相对路径
    res = os.path.dirname('D:/A/b/.txt')
    print(res)  # D:/A/b
    
    # path.join() 链接多个路径,组成一个新路径
    res = os.path.join('D:/A/b', 'a.txt')
    print(res)  # D:/A/b\a.txt
    
    # os.path.split() 拆分路径和主体
    # os.splitext() 拆分文件和后缀
    
    # os.path.getsize获取文件的大小
    res = os.path.getsize(res)
    print(res)  # 1
    
    # os.path.isdir()检查文件夹是否存在
    res = os.path.isdir('D:/A')  # True
    print(res)
    
    # os.path.isfile() 检查文件是否存在
    res = os.path.isfile('D:/A/b/a.txt')
    print(res)  # True
    
    # os.path.exists() 检查路径是否存在
    res = os.path.exists('D:/A/b/a.txt')
    print(res)  # True
    
    # os.path.samefile()检查两个路径是否指向同一个文件
    a = 'D:/A/b/a.txt'
    b = 'D:/A/../A/b/a.txt'
    res = os.path.samefile(a, b)
    print(res)  # True
    
    # os.path.getctime() 获取创建时间
    res = os.path.getctime(a)
    print(res)  # 1638171560.68456
    
    # os.path.getatime() 获取最后一次的访问时间
    res = os.path.getatime(a)
    print(res)  # 1638171560.685558
    
    # os.path.getmtime() 获取最后修改时间
    res = os.path.getmtime(a)
    print(res)  # 1638171560.685558
    

    高级操作模块 shutil

    import shutil
    
    # shutil.copy() 复制文件
    shutil.copy('D:/A/b/a.txt', 'D:/A/b/copy.txt')
    
    # shutil.copy2() 复制文件,并保存源文件信息(操作时间等信息)
    shutil.copy2('D:/A/b/copy.txt', 'D:/A/b/copy2.txt')
    
    # shutil.copytree() 复制整个文件树到指定目录,目标文件夹必须不存在
    shutil.copytree('D:/A/b', 'D:/B')
    
    # shutil.rmtree() 递归删除
    shutil.rmtree('D:/B')
    
    # shutil.move() 移动文件或文件夹到指定目录,目录必须不存在,也可以修改文件夹或文件的名称
    shutil.move('D:/A/b/copy.txt', 'D:/C')
    

    时间模块 time

    import time
    
    # time.time() 获取系统时间戳
    res = time.time()
    print(res)  # 1638178470.5199835
    
    # time.ctime() 获取当前系统时间
    res = time.ctime()
    print(res)  # Mon Nov 29 17:34:30 2021
    # 根据时间戳获取时间
    time.ctime(1638178785.255201)
    print(time)
    
    # time.localtime() 获取当前系统时间,返回元组格式数据
    res = time.localtime()
    print(
        res)  # time.struct_time(tm_year=2021, tm_mon=11, tm_mday=29, tm_hour=17, tm_min=34, tm_sec=30, tm_wday=0, tm_yday=333, tm_isdst=0)
    # 自定义时间格式
    res = time.localtime()
    print(f'{res.tm_year}年{res.tm_mon}月{res.tm_mday}日 {res.tm_hour}时:{res.tm_min}分{res.tm_sec}秒 星期{res.tm_wday + 1}')  # 2021年11月29日 17时:47分25秒 星期1
    
    # time.sleep() 睡眠时间
    time.sleep(1)
    
    # time.strftime() 获取当前系统时间并指定格式
    res = time.strftime('%Y-%m-%d %H:%M:%S 星期%w')  # 2021-11-29 17:52:54
    print(res)
    
    # time.perf_counter()计算代码运行时间
    start = time.perf_counter()
    
    for i in range(100000):
        print(i)
    end = time.perf_counter()
    print(end - start)  # 0.9292879999999999
    
  • 相关阅读:
    2015.07.20MapReducer源码解析(笔记)
    Hive(笔记)
    HDFS入门(1)
    Zookepper(2015.08.16笔记)
    USB_ModeSwitch 介绍(转)
    Perl 模块 Getopt::Std 和 Getopt::Long
    在linux下设置开机自动启动程序的方法
    gcc Makefile 入门
    Linuxexec函数族及system函数
    signal(SIGHUP, SIG_IGN)的含义
  • 原文地址:https://www.cnblogs.com/hekaiqiao/p/15606465.html
Copyright © 2020-2023  润新知