第五章 模块之random 、hashlib、time /datetime
5.2 random 返回随机生成的一个实数
random.randint() 返回随机生成的一个实数
import random #调用模块
def get_random_code(length=6):#变量为6
data = []
for i in range(length):#循环6次
v = random.randint(65,90)#生成65-90之间随机数字
data.append(chr(v))#将v变为字符追加到data列表中
return ''.join(data)#将列表中元素链接,变为空字符串
code = get_random_code()
print(code)#6位随机字符random.choice 从序列中随机抽选一个函数 验证码,抽奖
import random
print(random.choice([1,2,3,4,5]))random.sample 一个奖项多个人
import random
print(random.sample([1,2,3,4],3)) # [3, 2, 4]random.uniform 随机小数
import random
print(random.uniform(1,5)) # 3.599380534928744random.shuffle 将序列顺序打乱 洗牌
random.random()生成0和1之间的随机浮点数float
5.3 hashlib 摘要算法模块 Hmac算法
加密模块。md5/sha
import hashlib
md5 = hashlib.sha1('盐'.encode())
md5.update(b'str')
print(md5.hexdigest())两个文件的md5值是相同的
import hashlib
md5 = hashlib.md5()
#md5.update('hello'.encode())
#md5.update('wusir'.encode())
md5.update('hello,wusir'.encode())
# 46879507bf541e351209c0cd56ac160e
46879507bf541e351209c0cd56ac160e
print(md5.hexdigest())
# 将指定的 “字符串” 进行加密
import hashlib
def get_md5(data):
obj = hashlib.md5()#md5对象,md5不能反解,但是加密是固定的,就是关系是一一对应,所以有缺陷,可以被对撞出来,如果没有参数,所以md5遵守一个规则,生成同一个对应关系,
#如果加了参数,就是在原先加密的基础上再加密一层,这样的话参数只有自己知道,防止被撞库。
obj.update(data.encode('utf-8'))#要对哪个字符串进行加密,就放这里
result = obj.hexdigest()#拿到加密字符串
return result# 返回加密字符串
val = get_md5('')
print(val)# 应用,用户登录
import hashlib
USER_LIST = []
def get_md5(data):
obj = hashlib.md5("12:;4436ff123ad".encode('utf-8'))
obj.update(data.encode('utf-8'))
result = obj.hexdigest()
return result
def register():
print('**************用户注册**************')#提示
while True:#循环注册
user = input('请输入用户名:')#输入
if user == 'N':#判断输入是否为N
return #结束循环、函数
pwd = input('请输入密码:')#输入密码
temp = {'username':user,'password':get_md5(pwd)}#用户名和密码通过加密放在字典里
USER_LIST.append(temp)#将字典追加到列表里
def login():
print('**************用户登陆**************')#提示
user = input('请输入用户名:')#输入
pwd = input('请输入密码:')
for item in USER_LIST:#循环列表里的字典
if item['username'] == user and item['password'] == get_md5(pwd):#比较输入的内容与字典里是否一样
return True
register()
result = login()
if result:#判断返回值是否为真
print('登陆成功')
else:
print('登陆失败')hmac输出的长度和原始哈希算法的长度一致。需要注意传入的key和message都是
bytes类型,str类型需要首先编码为bytes。import hmac
message = b'Hello world'
key = b'secret'
h = hmac.new(key,message,digestmod='MD5')
print(h.hexdigest())
5.4 time /datetime 时间模块
time.time() 时间戳
import time
v = time.time() # 时间戳:1970-1-1 00:00time.timezone 当前时区与时间戳相差的秒数
import time
print(time.timezone) # -28800time.sleep(2) 睡2秒
datetime.now() 当前本地时间
from datetime import datetime
v1 = datetime.now()
print(v1) # 2019-04-18 17:52:33.046206timezone(timedelta(hours=7)) 获取东7区时间
from datetime import datetime,timezone,timedelta
tz = timezone(timedelta(hours=7)) # 当前东7区时间
v2 = datetime.now(tz)datetime.utcnow() 当前UTC时间
from datetime import datetime,timezone,timedelta
v3 = datetime.utcnow() # 当前UTC时间
print(v3)strftime 把datetime格式转换成字符串
from datetime import datetime,timezone,timedelta
v1 = datetime.now()
print(v1,type(v1))
val = v1.strftime("%Y-%m-%d %H:%M:%S")
print(val)strptime 字符串转成datetime
from datetime import datetime,timezone,timedelta
v1 = datetime.strptime('2011-11-11','%Y-%m-%d')
print(v1,type(v1))timedelta datetime时间的加减
from datetime import datetime,timezone,timedelta
v1 = datetime.strptime('2011-11-11','%Y-%m-%d')
v2 = v1 - timedelta(days=140)
date = v2.strftime('%Y-%m-%d')
print(date)时间戳和datetime关系
import time
from datetime import datetime,timezone,timedelta
ctime = time.time()
print(ctime)
v1 = datetime.fromtimestamp(ctime)
print(v1)
v1 = datetime.now()
val = v1.timestamp()
print(val)
第五章 模块之random 、hashlib、time /datetime的更多相关文章
- Python学习系列----第五章 模块
5.1 如何引入模块 在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入.在调用math模块中的函数时,必须这样引用: ...
- 第五章 模块之 shtil 、 json / pickle、importlib、collections
5.8 shtil 高级的 文件.文件夹.压缩包 处理模块 shutil.rmtree 删除目录 import shutilshutil.rmtree(path) shutil.move 重命名:移动 ...
- 第五章 模块之 getpass、sys、os
5.5 getpass 密码不显示(只能在终端运行) 密码不显示(只能在终端运行) import getpasspwd = getpass.getpass('请输入密码:')if pwd == '1 ...
- 第五章 模块之 logging、copy、re
5.12 logging 日志模块 报警等级 CRITICAL = 50 # 最高FATAL = CRITICALERROR = 40WARNING = 30WARN = WARNINGINFO = ...
- 第五章 模块之 struct、dis、正则表达式、异常处理
5.15 struct模块 pack 能够把所有的数字都固定的转换成4字节 5.16 dis dis.dis 查看计算机指令 5.16 正则表达式 基础 正则表达式概念: 是一种规则(元字符,量词) ...
- Python第五章__模块介绍,常用内置模块
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
- 简学Python第五章__模块介绍,常用内置模块
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
- Python之数据加密与解密及相关操作(hashlib模块、hmac模块、random模块、base64模块、pycrypto模块)
本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...
- Py修行路 python基础 (二十)模块 time模块,random模块,hashlib模块,OS及sys模块
一.前提介绍: 可以开辟作用域的只有类,函数,和模块 for循环 if,else: 不能开辟自己的作用域 避免程序复用和重复调用,将这些写到一个.py文件中,做成一个模块,进行调 ...
随机推荐
- elasticsearch x-pack license过期
1.注册一个新的license,每一项都要填写,每次可以使用一年,一年到期后再来注册一个新的 2.更新license (官方文档:https://www.elastic.co/guide/en/x-p ...
- 利用JDK方式和GuavaAPI方式实现观察者模式
1.JDK方法实现案例需求: 去餐厅吃饭有时候需要排队,进行排队叫号.假如所有等待的人都是观察者,叫号系统就是一个被监听的主题对象.当叫号系统发出叫号通知后,所有等待的人,都会收到通知,然后检查自己的 ...
- HugeGraph入门
一.HugeGraph简介 最近在搞好友推荐方便的工作,选择了图数据的方法,使用并学习了HugeGraph,再次记录一下. HugeGraph是百度在2018年中旬开源的一款图数据库(Graph Da ...
- SiamRPN: High Performance Visual Tracking with Siamese Region Proposal Network
High Performance Visual Tracking with Siamese Region Proposal Network 2018-11-26 18:32:02 Paper:http ...
- 100-continue
https://wiki.open.qq.com/wiki/技术优化原则#1._.E7.A8.8B.E5.BA.8F.E8.AE.BE.E8.AE.A1.E6.97.B6.E9.9C.80.E8.A6 ...
- openresty开发系列1--网关API架构及选型
微服务架构在项目中的应用越来越多,我们知道在微服务架构风格中,一个大应用被拆分成为了多个小的服务系统提供出来,这些小的系统他们可以自成体系,也就是说这些小系统可以拥有自己的数据库,框架甚至语言等,这些 ...
- MyBatis原理总结(前期准备)
1.不同框架解决不用问题,框架封装了很多细节,开发者可以使用简单的方式实现功能. 2.三层架构: 1.表现层 2.业务层 3.持久层 都有相应的处理框架. 3.持久层的技术解决方案: JDBC技 ...
- 算法习题---5.8Unix ls命令(Uva400)
一:题目 输入正整数n以及n个文件名,将这n个文件名按照ASCII优先升序排列,按列优先方式左对齐输出. 注意:文件名最长的为M,那么最右列字符串长度为M,其他列的长度为M+2 注意:一列最多允许出现 ...
- 【html】window.open()被部分浏览器拦截问题
一.原因:1.因为在chrome的安全机制里面,非用户触发的window.open方法,是会被拦截的: 二.什么情况下不会被拦截或会被拦截? 1. $('#btn').click(function ( ...
- Python初级 3 基本数学运算
一. 四大基本运算操作符 1 加+ print(3 + 2) 2 减- print(3 - 2) 3 乘:* print(3 * 2) 4 除/, // print(3 / 2) print(3 // ...