第十八课、模块的调用、os、sys、math、random、datetime、time、calendar、hashlib、hmac等模块

# 模块:在python里一个py 文件,就可以理解为模块
# 不是所有的py文件都能作为一个模块来导入
# 如果想要让一个py文件能够被导入,模块名字必须要遵守命名规则
# python为了方便我们开发,提供了很多内置模块
# 导入这个模块以后,就可以使用这个模块里的方法和变量
导入方式:
import time                        # 1、使用import 模块名直接导入一个模块 常用
import datetime as dt              # 2、导入模块并给这个模块起个别名
from random import randint         # 3、from 模块名 import函数名,导入一个模块里的方法或变量
from math import *                 # 4、from 模块名 import * 导入这个模块里面的所有方法和变量
from copy import deepcopy as dp    # 5、from 模块名 import 函数名 as 别名

常用模块,有更新时全部添加到此处

  1. os      操作系统模块
  2. sys     系统模块
  3. math   数学模块
  4. random 模块用来生成一个随机数
  5. datetime 日期模块
  6. time        时间模块
  7. calendar  日历模块
  8. hashlib与hmac   加密模块
  9. uuid 用来生成一个全局唯一的id

 1、os 全称operationSystem操作系统,os模块里提供的方法就是用来调用操作系统里的方法

import os
 #获取操作系统的名字, windows系列==nt/非windows= posix
print(os.name)                                      #查看当前使用的是什么系统
print(os.sep)                                   # 获取路径分隔符windows = \ 非windows = /
print(os.environ)                                    # 获取到环境变量配置
os.environ.get('PATH')                               #获取指定的环境变量配置
print(os.path.abspath('main.py'))                    # 获取文件的绝对路径
print(os.path.isdir('main.py'))                      # 判断是否是文件夹
print(os.path.isfile('main.py'))                     #判断是否是文件
print(os.path.exists('main.py'))                     # 判断文件是否存在
print(os.path.splitext('2020.2.21.demo.py'))         # 分割文件名与后缀名
# os 里其他方法
print(os.getcwd())                          # 获取当前的工作目录,即当前python脚本工作的目录
os.chdir('test')                            #改变当前脚本工作目录,相当于shell下的cd命令
print(os.rename('main.py', 'mainhaha.py'))  #给指定文件重命名
print(os.remove("mainhaha.py"))             #删除指定文件
os.rmdir('fffff')                           #删除指定文件夹
os.mkdir('fffff')                           #创建一个文件夹
os.chdir('c:\\')                            #切换工作目录
os.listdir()                                #列出指定目录里的所有文件和文件夹

 

2、sys 系统相关的功能模块

import sys
sys.exit()          # 让程序停止掉,与exit类似
print(sys.path)     #结果是一个列表,表示查找模块的路径
print(sys.stdin)    # 可以像input一样,接收用户输入,接收用户的输入,和input相关
print(sys.stdout)   #标准输出,修改sys.stdout可以改变默认输出位置,默认控制台
sys.stderr          #修改sys.stderr 可以改变错误输出的默认位置,默认控制台

 

3、math 数学计算模块

import math

print(math.pow(2, 10))         #幂运算
print(math.factorial(6))       # 求 阶乘
print(math.floor(12.98))       # 向下取整
print(math.ceil(15.0001))      #向上取整
print(math.sin(math.pi/6))     #弧度,π = 180°
print(math.cos(math.pi / 3))
print(math.tan(math.pi / 2))

 

4、random 模块用来生成一个随机数

import random

print(random.randint(2, 9))     #用来生成【a,b】随机整数,包含a和b
print(random.random())          #用来生成[0,1]随机小数,包含0不包含1.
print(random.randrange(2, 9))   #用来生成【a,b】随机整数,包含a,不包含b
print(random.choice(['刘德华','张学友','陈惠玲'])) #用来在可迭代对象里面随机抽取一个数据
print(random.sample(['刘德华', '张学友', '陈惠玲'],2)) #用来在可迭代对象里面随机取两个数据

 

5、datetime 日期模块

import datetime as dt
# 涉及到四个类 datetime /date/time/timedelta
print(dt.datetime.now()) #获取当前的日期时间
print(dt.date(2020, 1, 1)) #创建一个日期
print(dt.time(18, 23, 45)) #创建一个时间
print(dt.datetime.now() + dt.timedelta(3)) #计算三天以后的日期时间

 

6、time 时间模块

import time
print(time.time())            #获取从1970-01-01 00:00:00 UTC到现在时间的秒数(时间戳)
print(time.strftime('%Y-%m-%d %H:%M:%S'))  #按照指定格式输出时间
print(time.asctime())          #Sat Jan  2 21:51:25 2021 这个要传递元组
print(time.ctime())            # Sat Jan  2 21:51:25 2021 可以传递时间戳
print(time.sleep(10))          #让线程暂停10秒

 

7、calendar 日历模块

import calendar

print(calendar.setfirstweekday(calendar.SUNDAY)) #设置每周起始日期码,周一到周日分别对应0~6
calendar.firstweekday() #返回当前每周起始日期的设置。默认情况下,首次载入calendar模块时返回0,即星期一
c = calendar.calendar(2019) #生成2019年的日历,并且以周日为其实日期码
print(c)             #打印2019年日历
print(calendar.isleap(2020))
count = calendar.leapdays(1996,2010)    #获取1996年到2010年一共多少个闰年
print(count)
print(calendar.month(2019, 3))      # 打印2019年3月的日历

 

8、hashlib 与 hmac 加密模块

#这两个模块都是用来进行数据加密
#hashlib 模块里主要支持两个算法 md5 和 sha加密

"""加密方式:
    单向加密md5/sha:只能加密,不能解密。
    对称加密,
    非对称加密rsa
"""
import hashlib,hmac

# 要加密的内容需要转换成为二进制
x = hashlib.md5() #创建一个hashlib.md5()对象
x.update('abc'.encode('utf8')) #加密
print(len(x.hexdigest())) #用十六进制输出加密后的数据 32位

#sha1加密
sha1 = hashlib.sha1('abc'.encode('utf8'))
print(sha1.hexdigest())#40位
#sha2加密 基本够用
sha2 = hashlib.sha224('abc'.encode('utf8'))
print(len(sha2.hexdigest()))#56位
#sha3加密
sha3 = hashlib.sha256('abc'.encode('utf8'))
print(len(sha3.hexdigest()))#64位
#sha4加密
sha4 = hashlib.sha384('abc'.encode('utf8'))
print(len(sha4.hexdigest()))#96位
#sha5加密
sha5 = hashlib.sha512('abc'.encode('utf8'))
print(sha5.hexdigest()) #128位


#hmac 加密可以指定秘钥 赶紧上面那个加密就可以了,这个还是需要调用上面的sha
h = hmac.new('h'.encode(),'abc'.encode(),hashlib.sha224)
result = h.hexdigest()
print(result) #获取加密后的结果

 

9、uuid 模块用来生成一个全局唯一的id

import uuid
print(uuid.uuid1()) # 运行一次变化一次的uuid 32个长度,每一个字符有16个选择,16**32,全局唯一id
print(uuid.uuid4()) # 运行一次变化一次的uuid,是通过伪随机数得到的uuid,是有一定概率重复的,但是可能性很小,速度快所以常用
print(uuid.uuid3(uuid.NAMESPACE_DNS, 'abc')) # 生成固定不变的uuid
print(uuid.uuid5(uuid.NAMESPACE_URL, 'abc')) # 生成固定不变的uuid



结果:
514d244d-4d63-11eb-bdbb-00249b34fe09  # 每次运行随机变动 
f2a597c3-bc24-4907-aaf4-2ab458d2b4e6  # 每次运行随机变动  速度快常用
5bd670ce-29c8-3369-a8a1-10ce44c7259e  # 每次运行固定不变
68661508-f3c4-55b4-945d-ae2b4dfe5db4  # 每次运行固定不变

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cyz141001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值