day16-常用系统模块

一.系统常用模块介绍

  1. os模块 - 用来提供文件和文件夹相关操作的模块

    import os
    1) os.getcwd()	-	获取当前目录
       print(os.getcwd())
       open(os.getcwd() + '/test.py')
    2) os.listdir(文件夹路径)	-	获取指定文件夹下所有的文件和文件夹的名字(获取指定文件夹下所    有内容)
    3) 创建文件夹	-	mkdir、makedirs
       os.mkdir('./files/a')
       os.makedirs('./files/aaa/bbb/ccc')
    4) os.path.basename	-	返回文件名
       os.path.basename(./files/file1.txt)
        print(result) # file1.txt
    5) os.path.exists(文件/文件夹路径)	-	判断指定文件或文件夹是否存在
    6) os.path.isfile(路径)	-	判断路径是否是文件
    7) os.path.splitext(文件路径)	-	文件名和后缀分离
    
  2. 数学模块

    import math # 这里面所有的工具都是针对普通数字的

    import cmath # 这里面所有的工具都是针对复数的

    Python中和数字相关的类型有4种:int、float、bool、complex

    ai + b - 复数,i叫虚数单位,i ** 2 == -1

    注意:Python中的复数,j是虚数单位

    x = 2j + 3
    y = 3j - 4
    print(x + y) # -1+5j
    print(x * y) # -18+j
    

    #math模块

    1)小数转整数

    math.ceil(数字) - 向大取整

    math.floor(数字) - 向小取整

    round(数字) - 四舍五入

    print(math.ceil(1.9),math.ceil(1.1)) #2,2
    print(math.ceil(1.9),math.ceil(1.1)) #1,1
    print(round(1.9)) # 2
    print(round(1.1)) # 1
    

    2)求绝对值

    abs(数字)
    math.fabs(数字)
    print(abs(-30))     # 30
    print(math.fabs(-30))   # 30.0
    print(abs(-30.56))      # 30.56
    print(math.fabs(-30.56))   # 30.56
    
  3. 随即模块

    import random
    1) 产生随机整数: random.randint(a,b)  -  产生a到b的随机整数, [a, b]
    print(random.randint(1, 2))
    
    2) 产生随机小数:random.random()  - 产生0~1的随机小数
    print(random.random())
    
    产生0~100的随机小数
    print(random.random() * 100)
    
    产生50~100的随机小数
    print(random.random() * 50 + 50)
    
    产生M~N的随机小数:random.random() * (N-M) + M
    
    3)在指定的等差数列中随机获取一个数: random.randrange(起点, 终点, 步长)  - [起点, 终点)
    产生0~100的随机偶数
    print(random.randrange(0, 101, 2))
    
    4) 洗牌(随机打乱列表中元素的顺序)
    random.shuffle(列表)
    nums = [10, 20, 30, 40, 50, 60]
    random.shuffle(nums)
    print(nums)
    
    5) 抽牌
    random.choice(序列)    -   随机获取一个元素
    random.choices(序列, k=数量, cum_weights=权重值)  -   随机获取多个元素(有放回)
    random.sample(序列, k=数量)   -   随机获取多个元素(无放回)
    nums = ['宝马M5', '清空购物车', '现金200万', '谢谢!']
    result = random.choices(nums, cum_weights=[1, 3, 1, 10000], k=3)
    print(result)
    
    result = random.sample(nums, k=3)
    print(result)
    
  4. 哈希摘要

    1)哈希加密(摘要)的特点

    • 密文不可逆
    • 相同的数据通过相同的算法得到的密文相同,不相同的数据通过相同的算法得到的密文不相同
    • 不同长度的数据通过相同的算法得到的密文长度相同

    2)添加生成摘要数据

    hash对象.update(二进制数据)
    
    Python中字符串和二进制的相互转换:  二进制 - bytes
    a. 字符串转二进制
    方法一:bytes(字符串, 'utf-8')
    方法二:字符串.encode()
    
    b. 二进制转字符串
    方法一:str(二进制, 'utf-8')
    方法二:二进制.decode()
    
    result1 = '123456'.encode()
    print(type(result1))
    
    result2 = str(result1, 'utf-8')
    print(result2, type(result2))
    
    result3 = result1.decode()
    print(result3,  type(result3))
    
    对文本数据生成摘要
    hash.update('sjhgfja234827389ajshfkhkahsdjkfhaskhfdkjashfkhakdfasdf盛世嫡妃'.encode())
    生成文件的摘要
    hash.update(open('files/file1.txt', 'rb').read())
    

    3)获取摘要值(获取密文)

    result = hash.hexdigest()
    print(result)
    
  5. time模块

    import time
    

    时间戳指的是某一个时间到1970年1月1日0时0分0秒(格林威治时间)的时间差,单位是秒。

    1) time.time()  -  获取当前时间(当前时间的时间戳)
    t1 = time.time()
    print(t1, type(t1))       # 1639986631.790727   <class 'float'>
    
    2) time.localtime()
    time.localtime()  - 获取当前时间(返回的时候本地时间对应的结构体时间)
    time.localtime(时间戳) -   将时间戳转换成结构体时间
    t2 = time.localtime()
    print(t2)
    通过结构体时间单独获取指定信息
    tm_wday - 星期值,从0~6表示是周一~周天
    print(t2.tm_year, t2.tm_mon)
    
    t3 = time.localtime(0)
    print(t3)
    
    t4 = time.localtime(1639986631.790727)
    print(t4)
    
    3) time.sleep(时间)  -  让程序暂停/等待指定时间(单位秒)
    time.sleep(2)
    print('===============')
    
    结构体时间和字符串时间的相互转换
    xxxx-xx-xx xx:xx:xx
    xxxx/xx/xx xx:xx:xx
    xxxx年xx月xx日 xx时xx分xx秒
    
    4) time.strftime(时间格式, 结构体时间)  -  将结构体时间转换成指定格式的字符串时间
    print(t2)   # time.struct_time(tm_year=2021, tm_mon=12, tm_mday=20, tm_hour=16, tm_min=28, tm_sec=20, tm_wday=0, tm_yday=354, tm_isdst=0)
    result = time.strftime('%Y年%m月%d日 %H时%M分%S秒 %A', t2)
    print(result)   # 2021-12-20 16:28:20
    
    PM xx:xx   上午 4:30
    result = time.strftime('%p %I:%M', t2)
    print(result)
    
    
    5)time.strptime(时间字符串, 时间格式)   -  将字符串时间转换成结构体时间
    2017-3-24 是周几?
    '2017-3-24'
    result = time.strptime('2017-3-24 PM 2:30', '%Y-%m-%d %p %I:%M')
    print(result)
    print(result.tm_wday)
    
    6)time.mktime(结构体时间)     -    将结构体时间转换成时间戳
    print(t2)
    result = time.mktime(t2)
    print(result)       # 1639991023.0
    
  6. datetime模块

    from datetime import datetime, date, time, timedelta
    创建datetime类型的数据
     1)获取当前时间
    t1 = datetime.now()
    print(t1, type(t1))       # 2021-12-20 17:13:10.560317  <class 'datetime.datetime'>
    
    t2 = datetime.today()
    print(t2, type(t1))       # 2021-12-20 17:13:31.792873  <class 'datetime.datetime'>
    
     2) 直接提供时间信息
    # datetime(年, 月, 日, 时=0, 分=0, 秒=0)
    t3 = datetime(2018, 10, 1)
    print(t3, type(t3))     # 2018-10-01 00:00:00 <class 'datetime.datetime'>
    
     3) 通过字符串时间创建时间对象
    t4 = datetime.strptime('2019-3-31 23:59:59', '%Y-%m-%d %H:%M:%S')
    print(t4, type(t4))       # 2019-3-31 23:59:59   <class 'datetime.datetime'>
    
    获取时间对象具体的时间信息
    print(t4.year)
    print(t4.month)
    print(t4.day)
    print(t4.hour)
    print(t4.minute)
    print(t4.second)
    print(t4.weekday())
    
    时间的加减操作
     时间对象 -/+  timedelta(days=?, hours=?, minutes=?, seconds=?, weeks=?)
    
     练习:2019-3-31 23:59:59 2秒后是什么时候
    result = t4 + timedelta(seconds=2)
    print(result)
    
     练习:2019-3-31 23:59:59 4天是什么时候
    result = t4 - timedelta(days=4)
    print(result)
    
     练习:2019-3-31 23:59:59 一周后是什么时候
    result = t4 + timedelta(weeks=1)
    print(result)
    
     练习:2019-3-31 23:59:59 52小时30分钟后是什么时候
    result = t4 + timedelta(days=5, hours=2, minutes=30)
    print(result)
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值