python标准库基础学习

TIME模块

1.时间戳

代表1970年到现在的秒数
一般用来算时间差

print(time.time())

2.按照某种格式显示的时间

用于展示时间,例如记录日志
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'))

3.结构化时间

方便去显示时间的某一部分

# 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)

datatime模块

# 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)

random模块

得到一个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模块

返回目录下的所有文件名

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)

configparser 读取配置文件

同级目录创建一个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'))

hashlib 模块

特点
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')

你可能感兴趣的:(python,python)