python模块 获得时间戳 获取格式化时间 获取时间对象 将时间对象转化为格式化时间 将字符串按格式的时间转化为实践对象 从索引0开始计算周一 UTC ISO 格林威治时间 获取日期时间 获取实践对象 获取七天时间 获取当前时间24小时以前的时间 enmerate (可迭代对象)——把列每个元素加上位置索引,用元组包裹

time模块

"""
三种时间表显现形式:
时间戳:给电脑看(1920,1,1)按秒计算
格式化时间(format String):给人看,返回2019-11-16
格式化时间对象(struct_time):返回一个元组,九个值
"""
import time

print(time.time())

获取格式化时间

print(time.strftime('%Y-%m-%d %H:%M:%S'))
print(time.strftime('%Y-%m-%d %X'))#%X ==%H:%M:%S

获取时间对象

print(time.localtime())
print(type(time.localtime()))#元组类对象
res = time.localtime()
print(res.tm_hour)#通过.调取元组里边的值

res = time.localtime()
time.sleep(5)
print(time.strftime('%Y-%m-%d %H:%M:%S'))
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))

将时间对象转化为格式化时间

print(time.strftime('%Y-%m-%d %H:%M:%S',res))

将字符串按格式的时间转化为实践对象

res = time.strptime('2019-01-01','%Y-%m-%d')
print(res.tm_mday)#字符串里不包含的调取元组为0
print(time.localtime())

datetime 模块
import datetime
获取当前年月日
print(datetime.date.today())
print(datetime.datetime.now())

获取当前年月日时分秒

print(datetime.datetime.today())
res = datetime.datetime.today()
print(type(res))#<>
print(res.year)#获取现在的年份

从索引0开始计算周一

UTC

print(res.weekday())

ISO

print(res.isoweekday())
UTC时区,别经时间
print(datetime.datetime.now()) #与 datetime.datetime.today()

格林威治时间

print(datetime.datetime.utcnow())
'''
日期时间 = 日期时间"+" or "-" 时间对象
时间对象 = 日期时间"+" or '-'日期时间

'''

获取日期时间

ct = datetime.datetime.now()
print(ct)

获取实践对象 获取七天时间

time_obj = datetime.timedelta(minutes=24)#此处可以传days,seconds,microseconds,milliseconds,minutes,hours,weeks

获取当前时间24小时以前的时间

later_time = ct+time_obj#加时以后,减时以前
print(later_time)
new_time_obj =later_time - ct
print(new_time_obj)#输出时间对象

random函数
import random
random.randint(1,9)#随机生成1-9

random.random()#生成0-1之间任意小数

l = ['j','q','k','a']
random.shuffle(l)#原列表打乱
print(l)
res = random.choice(l)
print(res)
"""

需求:
大小写字母、数字组合而成
组合5位数的随机验证码

前置技术:
- chr(97) # 可以将ASCII表中值转换成对应的字符
# print(chr(101))
- random.choice

"""
def yz(n):
s = ''
for i in range(n):
res = random.randint(65,90)
capital = chr(res)
res2 = random.randint(97,122)
lower = chr(res2)
res3 = str(random.randint(0,9))
number = res3
dic =[capital,lower,number]
roll = random.choice(dic)
s+=roll
return s
code = yz(5)
print(code)

sys,os模块

import sys
import os
获取当前python解释器的环境变量路径
print(sys.path)

将当前项目添加到环境变量中
BASE_PATH = os.path.dirname(os.path.dirname(file))
print(BASE_PATH)
sys.path.append(BASE_PATH)

print(sys.argv)# 文件名,用户名,密码

"""
os与操作系统交互的模块
"""
import os
需求获得当前的根目录

先获得当前文件的上一级
DAY_16PATH = os.path.dirname(file)
print(DAY_16PATH)

项目的根目,路径相关的值都用‘常量’
BASE_PATH =os.path.dirname(DAY_16PATH)
print(BASE_PATH)

路径的拼接:拼接文件绝对路径
TEST_PATH = os.path.join(DAY_16PATH,'写真集.txt')
print(TEST_PATH)

判断文件/文件夹是否存在,存在返回Ture,不存在返回False
print(os.path.exists(TEST_PATH))
print(os.path.exists(BASE_PATH))

判断文件夹是否存在,
print(os.path.isdir(TEST_PATH))
print(os.path.isdir(DAY_16PATH))

创建文件
DIR_PATH = os.path.join(DAY_16PATH,'写真集')#后边是名字,这个只是地址的拼接,并不会产生影响

os.mkdir(DIR_PATH)

删除文件,只能删除空文件
os.rmdir(DIR_PATH)

yellow_list = os.listdir(r'D:工程python13正式课程11.16写真集')
print(yellow_list)

enmerate (可迭代对象)——把列每个元素加上位置索引,用元组包裹

res = enumerate(yellow_list)
print(res)
print(list(res))
让用户选择文件
1.打印所有老师的作品
2.限制用户必须输入数字,数字的范围必须在编号内
若不是数字,则重新选择
若是数字,往下走判断是否在编号范围内
判断如果不在列表范围内,则重新选择
while True:
for index, name in enumerate(yellow_list):
print(f'编号{index}内容{name}')
choice = input('请输入您的选择,输入编号')
if not choice.isdigit():
print('请输入纯数字')
if choice not in range(len(yellow_list)):
print('输入序号不存在,请重新输入')
file_name = yellow_list[int(choice)]
OPEN_PATH = os.path.join(r'D:工程python13正式课程11.16写真集',file_name)
with open(OPEN_PATH,'r',encoding='utf8') as f:
print(f.read())

hashlib模块

"""
hashlib是一个加密模块:
内置了MD5:
摘要算法:
——摘要是从内容中获取的加密字符串
——摘要一样,内容就一定一样:保证唯一性
——密文密码就是一个摘要

"""

import hashlib
md5_obj = hashlib.md5()#固定流程

str1 = '1234'

md5_obj.update(str1.encode('utf8'))#update,必须传入bytes类型
res = md5_obj.hexdigest()#编写密码
print(res)

import hashlib

def pwd_md5(pwd):
md5_obj = hashlib.md5()
str1 = pwd
md5_obj.update(str1.encode('utf8'))

sal = '雨生好帅'#创造盐

md5_obj.update(sal.encode('utf8'))#加盐


res = md5_obj.hexdigest()
return res

json模块

主要两组函数,

dumps&loads 序列化和反序列化

dump&load节省了f.write和f.read

import json
d = {'nanme','tian','age',18}
json.dumps(d)

res = json.dumps(d)
print(res)
import json
user_dic ={
'user':'tank'
,'password':123
}
with open ('user.json','w',encoding='utf8')as f:
json.dump(user_dic,f)
with open('user.json','r',encoding='utf8')as f:
res = json.load(f)
print(res)
print(type(res))
print(res['user'])

pickle模块

与json相比,这个模块的有点在于支持所有python的数据类型转换

可以直接存bytes类型。存取更加快速。

缺点是无法跨平台

collection 模块

这个模块提供了除了把大数据类型以外的类型

主要记住两类

具名元组

关键字namedtuple

from collections import namedtuple
point = namedtuple('坐标',['x','y'])
p = print(1,2)
print(p)
print(type(p))
p = namedtuple('小电影','city movie name')
tank_and_sean = p('Tokyo','HOT','小泽')
print(tank_and_sean)#小电影(city='Tokyo', movie='HOT', name='小泽')

有序化字典

关键字:OrderedDict

from collections import OrderedDict
order_dict = OrderedDict({'x':1,'y':2,'z':3})
print(order_dict)
print(order_dict.get('y'))
print(order_dict['y'])

openpyxl模块

可以对EXCEL进行操作

写入
from openpyxl import Workbook
wb_obj = Workbook()#函数加载进变量
wb1 = wb_obj.create_sheet('作业',0)
wb1['a10']=100
wb_obj.save('作业.xlsx')

读取更改
from openpyxl import load_workbook
wb_obj = load_workbook('作业.xlsx')
wb2 = wb_obj['作业']
print(wb2['a10'].value)
wb_obj.save('作业1.xlsx')

save,文件存在,在原文件上直接保存,不存在,新建文件夹,存储是覆盖原文件,或者新建一个表格

subprocess模块

可以通过python代码操作终端发送命令,并可以返回结果

import subprocess
while True:
# 1.让用户输入终端命令
cmd_str = input('请输入终端命令:').strip()
# Popen(cmd命令, shell=True,
# stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# 调用Popen就会将用户的终端命令发送给本地操作系统的终端
# 得到一个对象,对象中包含着正确或错误的结果。
obj = subprocess.Popen(
cmd_str, shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)

success = obj.stdout.read().decode('gbk')
if success:
    print(success, '正确的结果')

error = obj.stderr.read().decode('gbk')
if error:
    print(error, '错误的结果')

logging模块

用来记录日志模块,一般记录用户操作
1.log文件目录

BASE_PATH = os.path.dirname(os.path.dirname(file))
logfile_dir = os.path.join(BASE_PATH, 'log_dir')

2.log文件名

logfile_name = 'user.log'

3.log配置字典
4.
def get_logger(user_type):
1.加载log配置字典到logging模块的配置中
2.获取日志对象
logger = logging.getLogger(user_type)
return logger
logger = get_logger('user')
logger.info('学习不要浮躁,一步一个脚印!')

正则模块

正则表达式:通过符号,从字符串中筛选出你想要的结果

是一门单独的技术,任何语言都可以使用

若想使用正则使用RE模块在python中

findall

匹配所有字符,拿到返回的结构,返回的结果是一个列表

search

匹配一个后直接结束,没有就报错

返回对象

match

从头开始匹配

返回对象