代表1970年到现在的秒数
一般用来算时间差
print(time.time())
用于展示时间,例如记录日志
2021-01-23 22:06:00
# coding:utf-8
import time
# 例如2021-01-23 22:06:00
print(time.strftime('%Y-%m-%d %H:%M:%S'))
下面这个式子是默认以冒号分割的写法
print(time.strftime('%Y-%m-%d %X'))
方便去显示时间的某一部分
# coding:utf-8
import time
res=time.localtime()
print(res)
输出结果
time.struct_time(tm_year=2021, tm_mon=1,
tm_mday=23, tm_hour=22, tm_min=12,
tm_sec=8, tm_wday=5, tm_yday=23, tm_isdst=0)
查看今天是今年的第多少天
res=time.localtime()
print(res.tm_yday)
# coding:utf-8
import datetime
print(datetime.datetime.now())
输出
2021-01-23 22:24:50.363767
计算一下自己会员哪天到期
print(datetime.datetime.now()+
datetime.timedelta(days=33))
datetime.timedelta()可以加参数,计算33天后是哪一天
# coding:utf-8
import time
'''
2000年11月13日,12点整加7天后的时间
格式字符先转换成时间戳,然后加7天的秒数
再转换成格式化的字符
'''
struct_time = time.strptime('1988-11-13 12:00:00',
'%Y-%m-%d %H:%M:%S')
timestamp = time.mktime(struct_time) + 7 * 86400
# print(timestamp)
res = time.strftime('%Y-%m-%d %X', time.localtime(timestamp))
print(res)
得到一个0-1之间的浮点数
# coding:utf-8
import random
print(random.random())
取1-10之间的随机整数
[1,10]
print(random.randint(1,10))
choice方法不仅可以随机数字还可以随机各种类型
# coding:utf-8
import random
print(random.choice([1, 'wdd', [1, 2, 3]]))
range方法,取[1,10)范围内的数
print(random.randrange(1,10))
sample方法,从列表里随机出任意个值
# 随机挑选两个,后面的2改成其他数是几就是随机出几个
print(random.sample([1,'sss','e32'],2))
抽取指定范围内的小数
[1,10)范围内
print(random.uniform(1,10))
对列表进行洗牌
import random
item=[1,2,3,4,5]
random.shuffle(item)
print(item)
验证码生成器
# coding:utf-8
import random
'''
小应用:制作随机验证码生成器
'''
res = ''
for i in range(6): #6位验证码
s1 = chr(random.randint(65, 90))
s2 = str(random.randint(0, 9))
res += random.choice([s1, s2])
print(res)
返回目录下的所有文件名
os.listdir()
返回文件大小
os.path.getsize()
执行一条系统命令,可以看做命令框
os.system("ifconfig")
判断是不是文件和文件夹
os.path.isfile()
os.path.isdir()
import time
def progress(percent):
if percent > 1:
percent = 1
res = int(50 * percent) * '#'
print('\r[%-50s] %d%%' % (res, int(percent * 100)), end='')
# 模拟场景
recv_size = 0 # 初始数据
total_size = 1000000 # 文件大小
while recv_size < total_size:
time.sleep(0.01) # 模拟网速
recv_size += 1024
# 打印进度条
percent = recv_size / total_size
progress(percent)
把内存中的数据类型转换成一个特定的格式,可以给其他平台使用、
格式类型 json或pickle
json可以被所有语言识别
picjkle只能被python识别
用于存储,或者用于别的平台
把序列化的内容反解为可用的数据格式
import json
json_res = json.dumps([1, 'sss'])
with open("1.json", mode="wt", encoding='utf-8')as f:
f.write(json_res)
l = json.loads(json_res)
print(type(l), l)
同级目录创建一个test.ini 内容如下
[section1]
k1=22
k2=121
获取方法
import configparser
config = configparser.ConfigParser()
config.read("test.ini")
# 获取sections
print(config.sections())
# 读取items
print(config.items('section1'))
# 获取字符结果
print(config.get('section1', 'k1'))
# 获取数字结果
print(config.getint('section1', 'k1'))
特点
1.传给他的内容一样,那hash值也一样
2.hash结果不会因为传入文件大小而改变
3.不可逆算法,不能反解
import hashlib
m = hashlib.md5()
# 运输原材料 接受bytes类型
m.update('hello'.encode('utf-8'))
m.update('world'.encode('utf-8'))
# 合并原材料
res = m.hexdigest()
print(res)
import hashlib
# 模拟撞库
# 通过抓包截获密文
cy = '4ecbd45e1198bb728cab5168e3fe9645'
# 密码库
passwords = ['12138',
'892',
'lll222',
'kkjj22',
'qw21'
]
# 遍历找到明文密码的hash值
# 定义空字典
dic = {}
for p in passwords:
# 算出字典密码的md5值
res = hashlib.md5(p.encode('utf-8'))
# 将res的16进制形式处理成bytes类型
dic[p] = res.hexdigest()
# print(dic)
# 试密码
for k, v in dic.items():
if v == cy:
print("撞库成功,密码是%s" % k)
break
else:
print("未找到密码")
import logging
logging.basicConfig(
# 格式
format='%(asctime)s-%(name)s-%(levelname)s-%(module)s : %(message)s'
)
logging.debug()
logging.error()
logging.warning('warn')