python基础语法11 内置模块time,datatime,random,os,sys,hashlib模块
time模块
在python的三种时间表现形式:
1.时间戳: 给电脑看的。
- 自1970-01-01 00:00:00到当前时间,按秒计算,计算了多少秒。
2.格式化时间(Format String): 给人看的
- 返回的是时间的字符串 2002-01-11
3.格式化时间对象(struct_time):
- 返回的是一个元组, 元组中有9个值:
9个值分别代表: 年、月、日、时、分、秒、一周中第几天,一年中的第几天,夏令时(了解)
import time # 1.获取时间戳(******)计算时间时使用
print(time.time()) # (*******)1573887159.1747248
# 2.获取格式化时间 (*******)拼接用户时间格式并保存时使用
# 获取年月日
print(time.strftime('%Y-%m-%d')) # 获取年月日时分秒
print(time.strftime('%Y-%m-%d %H:%M:%S')) # 2019-11-16 14:50:08
# %X == %H:%M:%S
print(time.strftime('%Y-%m-%d %X')) ## 2019-11-16 14:50:08
print(time.strftime('%X')) #14:54:25 # 获取年月
print(time.strftime('%Y/%m'))
3.获取时间对象 (****)
print(time.localtime())
# time.struct_time(tm_year=2019, tm_mon=11, tm_mday=16, tm_hour=14, tm_min=56, tm_sec=15, tm_wday=5, tm_yday=320, tm_isdst=0)
print(type(time.localtime())) # <class 'time.struct_time'>
time_obj=time.localtime()
print(time_obj.tm_year) #
print(time_obj.tm_mon) #
res=time.localtime()
time.sleep(5) #获取系统当前时间的格式化时间
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))
# 2019-11-16 15:09:31
# 将时间对象转为格式化时间
print(time.strftime('%Y-%m-%d %H:%M:%S',res))
# 2019-11-16 15:09:26 # 将字符串格式的时间转为时间对象
res=time.strptime('2019-01-01','%Y-%m-%d')
print(res)
# time.struct_time(tm_year=2019, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=1, tm_isdst=-1)
datetime模块
import datetime # 获取当前年月日
print(datetime.date.today()) # (*******) 2019-11-16
#
# # 获取当前年月日时分秒
print(datetime.datetime.today()) # (*******) 2019-11-16 15:25:03.590939
#
time_obj = datetime.datetime.today()
print(type(time_obj))
print(time_obj.year)
print(time_obj.month)
print(time_obj.day)
#
# # 从索引0开始计算周一
# UTC
print(time_obj.weekday()) # 0-6
# ISO
print(time_obj.isoweekday()) # 1-7 # UTC时区
# 北京时间
print(datetime.datetime.now()) # (*******)
# 格林威治
print(datetime.datetime.utcnow())
日期/时间的计算 (*******)
日期时间 = 日期时间 “+” or “-” 时间对象
时间对象 = 日期时间 “+” or “-” 日期时间
# 日期时间:
current_time = datetime.datetime.now()
print(current_time) # 2019-11-16 16:16:40.990100 # 时间对象
# 获取7天时间
time_obj = datetime.timedelta(days=7)
print(time_obj) #7 days, 0:00:00 # 获取当前时间7天后的时间
# 日期时间 = 日期时间 “+” or “-” 时间对象
later_time = current_time + time_obj
print(later_time) #2019-11-23 16:16:40.990100 # 时间对象 = 日期时间 “+” or “-” 日期时间
time_new_obj = later_time - current_time
print(time_new_obj) #7 days, 0:00:00
random模块
import random #随机获取1—9中任意的整数
res = random.randint(1, 9)
print(res) #默认获取0——1之间任意小数
res2 = random.random()
print(res2) #洗牌
#将可迭代中的值进行乱序
list1 = ['红桃A', '梅花A', '红桃Q', '方块K']
random.shuffle(list1) # 注意: 不可变类型不可被乱序
# - list
#可以对某个有索引的可迭代对象进行乱序
print(list1) # ['方块K', '红桃A', '红桃Q', '梅花A'] #随机获取可迭代对象中的某一个值
#random.choice(可迭代对象): 注意: 有索引的可迭代对象
# - list, tuple
list1 = ['红桃A', '梅花A', '红桃Q', '方块K']
res3 = random.choice(list1)
print(res3) # 方块K
# 需求: 随机验证码
'''
需求:
大小写字母、数字组合而成
组合5位数的随机验证码 前置技术:
- chr(97) # 可以将ASCII表中值转换成对应的字符
# print(chr(101))
- random.choice
''' # 获取任意长度的随机验证码
def get_code(n):
code = ''
# 每次循环只从大小写字母、数字中取出一个字符
# for line in range(5):
for line in range(n): # 随机获取一个小写字母
res1 = random.randint(97, 122)
lower_str = chr(res1) # 随机获取一个大写字母
res2 = random.randint(65, 90)
upper_str = chr(res2) # 随机获取一个数字
number = str(random.randint(0, 9)) code_list = [lower_str, upper_str, number] random_code = random.choice(code_list) code += random_code return code code = get_code(100)
print(code)
print(len(code))
OS模块
os与操作系统交互的模块
import os # 需求: 获取当前项目根目录 # 获取当前文件中的上一级目录
DAY15_PATH = os.path.dirname(__file__)
print(DAY15_PATH) #D:/oldboy_edu/python_code/day15
#
# # 项目的根目录,路径相关的值都用 “常量”
BASE_PATH = os.path.dirname(DAY15_PATH)
print(BASE_PATH)
#
# # 路径的拼接: 拼接文件 “绝对路径”
TEST_PATH = os.path.join(DAY15_PATH, '老男孩老师们的写真集.txt')
print(TEST_PATH) # D:/oldboy_edu/python_code/day15\老男孩老师们的写真集.txt
#拼接路径,反斜杠没事,程序会根据电脑系统(window/linux)自动调整
#
# # 判断“文件/文件夹”是否存在:若文件存在返回True,若不存在返回False
print(os.path.exists(TEST_PATH)) # True
print(os.path.exists(DAY15_PATH)) # True
#
# # 判断“文件夹”是否存在
print(os.path.isdir(TEST_PATH)) # False
print(os.path.isdir(DAY15_PATH)) # True
#
# # 创建文件夹
DIR_PATH = os.path.join(DAY15_PATH, '老男孩老师们的写真集')
os.mkdir(DIR_PATH) # 删除文件夹: 只能删除 “空的文件夹”
os.rmdir(DIR_PATH) # os.remove('D:/oldboy_edu/python_code/day15/老男孩老师们的写真集.txt') #删除文件
# 获取某个文件夹中所有文件的名字
teacher_list = os.listdir(r'D:\项目路径\python13期\day15\老男孩老师们的写真集')
print(teacher_list) # ['egon.txt', 'sean.txt', 'tank.txt'] # enumerate(可迭代对象) ---> 得到一个对象,对象有一个个的元组(索引, 元素)
# 注意: 可迭代對象中若是字典,则取字典中所有的key
#返回的enumerate对象 ---> 相当于迭代器对象
#list(迭代器对象) ---> 列表
res = enumerate(teacher_list) # [(0, 'egon.txt'), (1, 'sean.txt'), (2, 'tank.txt')]
print(list(res)) # 让用户选择文件
while True:
# 1.打印所有老师的作品
for index, name in enumerate(teacher_list):
print(f'编号: {index} 文件名: {name}') choice = input('请选择想看的老师作品-->(头条影片: Jason写真) 编号:').strip() # 2.限制用户必须输入数字,数字的范围必须在编号内
# 若不是数字,则重新选择
if not choice.isdigit():
print('必须输入数字')
continue # 若是数字,往下走判断是否在编号范围内
choice = int(choice) # 判断如果不在列表范围内,则重新选择
if choice not in range(len(teacher_list)):
print('编号范围错误!')
continue file_name = teacher_list[choice] teacher_path = os.path.join(
r'D:\项目路径\python13期\day15\老男孩老师们的写真集', file_name) print(teacher_path) with open(teacher_path, 'r', encoding='utf-8') as f:
print(f.read())
sys模块
import sys
import os # 获取当前的Python解释器的环境变量路径
print(sys.path) # 将当前项目添加到环境变量中
BASE_PATH = os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_PATH)
import sys
import os # 获取当前的Python解释器的环境变量路径
print(sys.path) print('==' * 100)
# 将当前项目添加到环境变量中
BASE_PATH = os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_PATH)
print(sys.path)
print('==' * 100) # 获取cmd终端的命令行 python3 py文件 用户名 密码
print(sys.argv) # 返回的是列表['py文件', '用户名', '密码'] cmd_list = sys.argv # 执行文件权限认证
if cmd_list[1] == 'ldc' and cmd_list[2] == '':
print('通过验证')
print('开始执行逻辑代码') else:
print('用户名或密码错误,权限不足!')


hashlib模块
- sha_256(了解)
hashlib是一个加密模块:
内置了很多算法
- MD5(*******): 不可解密的算法(2018年以前)
摘要算法:
- 摘要是从某个内容中获取的加密字符串
- 摘要一样,内容就一定一样: 保证唯一性
- 密文密码就是一个摘要
import hashlib md5_obj = hashlib.md5()
# print(type(md5_obj))
str1 = ''
# update中一定要传入bytes类型数据
md5_obj.update(str1.encode('utf-8')) # 得到一个加密后的字符串
res = md5_obj.hexdigest()
# 202cb962ac59075b964b07152d234b70
print(res) # 以上操作撞库有可能会破解真实密码
# 防止撞库问题: 加盐
import hashlib def pwd_md5(pwd): #
md5_obj = hashlib.md5()
# print(type(md5_obj))
str1 = pwd # '1234'
# update中一定要传入bytes类型数据
md5_obj.update(str1.encode('utf-8')) # 创造盐
sal = '坦克怎么这么帅啊!'
# 加盐
md5_obj.update(sal.encode('utf-8')) # 得到一个加密后的字符串
res = md5_obj.hexdigest()
# eb1ca06cf5940e9fb6ef39100ec72c94
return res user_str2 = f'tank:{res}' with open('user.txt', 'w', encoding='utf-8') as f:
f.write(user_str2) # 模拟用户登陆操作 # 获取文件中的用户名与密码
with open('user.txt', 'r', encoding='utf-8') as f:
user_str = f.read() file_user, file_pwd = user_str.split(':') # 用户输入用户名与密码
username = input('请输入用户名:').strip()
password = input('请输入密码:').strip() # # 校验用户名与密码是否一致
if username == file_user and file_pwd == pwd_md5(password): # pwd_md5('1234')
print('登陆成功')
else:
print('登陆失败')
python基础语法11 内置模块time,datatime,random,os,sys,hashlib模块的更多相关文章
- Python常用模块(time, datetime, random, os, sys, hashlib)
time模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp) : 通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运 ...
- Day14 Python基础之os/sys/hashlib模块(十二)
os模块 os.getcwd() #获取当前工作路径 os.chdir(‘dirname1/dirname2/dirname3’) #改变当前脚本的工作路径,相当于cmd下的cd os.makedi ...
- collection,random,os,sys,序列化模块
一.collection 模块 python拥有一些内置的数据类型,比如 str,list.tuple.dict.set等 collection模块在这些内置的数据类型的基础上,提供了额外的数据类型: ...
- time,datetime,random,os,sys,hashlib,logging,configparser,re模块
#-----time模块----- print(help(time)) #打印time帮助文档 print(time.time()) #打印时间戳 1569824501.6265268 time.sl ...
- CSIC_716_20191116【常用模块的用法 time ,datetime, random, os, sys, hashlib】
import time import datetime import os import sys import random import hashlib time模块 时间戳(Timestamp) ...
- python基础语法13 内置模块 subprocess,re模块,logging日志记录模块,防止导入模块时自动执行测试功能,包的理论
subprocess模块: - 可以通过python代码给操作系统终端发送命令, 并且可以返回结果. sub: 子 process: 进程 import subprocess while Tru ...
- python基础语法12 内置模块 json,pickle,collections,openpyxl模块
json模块 json模块: 是一个序列化模块. json: 是一个 “第三方” 的特殊数据格式. 可以将python数据类型 ----> json数据格式 ----> 字符串 ----& ...
- 2019-7-18 collections,time,random,os,sys,序列化模块(json和pickle)应用
一.collections模块 1.具名元组:namedtuple(生成可以使用名字来访问元素的tuple) 表示坐标点x为1 y为2的坐标 注意:第二个参数可以传可迭代对象,也可以传字符串,但是字 ...
- python基础语法及知识点总结
本文转载于星过无痕的博客http://www.cnblogs.com/linxiangpeng/p/6403991.html 在此表达对原创作者的感激之情,多谢星过无痕的分享!谢谢! Python学习 ...
随机推荐
- Union 与 Union All 区别(抄的W3C School的,抄一遍就记住了!)
Union ,UnionAll 俩都是用来合并两个或以上的查询结果集: Union操作符 :select语句中必须有相同的数列 (相等数量的列,不同结果集同一列的数据类型一致,列的顺序必须相同): u ...
- 【转帖】netstat命令总结
netstat命令总结 https://www.cnblogs.com/chenqionghe/p/10654109.html nestat介绍 netstat是一款命令行工具,可用于列出系统上所有的 ...
- FreeSWITCH 总体架构
[1]总体结构 [2]代码结构目录 [3]模块简介 Applications应用 mod_abstraction – 提供了一个抽象的API调用(未来有更多功能)Provides an abstrac ...
- 『数 变进制状压dp』
数 Description 给定正整数n,m,问有多少个正整数满足: (1) 不含前导0: (2) 是m的倍数: (3) 可以通过重排列各个数位得到n. \(n\leq10^{20},m\leq100 ...
- - XML 解析 总结 DOM SAX PULL MD
目录 目录 XML 解析 总结 DOM SAX PULL MD 几种解析方式简介 要解析的内容 DOM 解析 代码 输出 SAX 解析 代码 输出 JDOM 解析 代码 输出 DOM4J 解析 代码 ...
- 指针总结指向const的指针、const指针、指向const指针的const指针
指针的一些总结 const与指针 指向const的指针指的是指针指向的数据是常量,不可以被修改,但指针变量本身可以被修改,如const int *p:严格说不能用指针间接修改指向的数据,但该变量可 ...
- linux基础命令汇总
目录 linux系统结构 常用命令 切换目录命令cd 文件操作 vi和vim编辑器 重定向输出>和>> 管道 | &&命令执行控制 网络通讯命令 系统管理命令 用户和 ...
- Date+闭包
date类: var time=new.date() get date() 返回一个月中的某一天 get day () 返回一周中的某一天 get fullyear() 对象以四位数返回年份 get ...
- ES6 之 Symbol
1. 基本用法 Symbol 是ES6引入的一种新的原始数据类型,表示独一无二的值. 前六种基础数据类型是 undefined null Boolean String Number Object Sy ...
- JavaScript设计模式与开发实践随笔(一)
编程语言按照数据类型大体可以分为两类,一类是静态类型语言,另一类是动态类型语言. 静态类型语言在编译时便已确定变量的类型,而动态类型语言的变量类型要到程序运行的时 候,待变量被赋予某个值之后,才会具有 ...