python基础语法11 内置模块time,datatime,random,os,sys,hashlib模块

时间:2023-01-05 14:49:10

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('用户名或密码错误,权限不足!')

python基础语法11   内置模块time,datatime,random,os,sys,hashlib模块

python基础语法11   内置模块time,datatime,random,os,sys,hashlib模块

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模块的更多相关文章

  1. Python常用模块&lpar;time&comma; datetime&comma; random&comma; os&comma; sys&comma; hashlib&rpar;

    time模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp) :         通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运 ...

  2. Day14 Python基础之os&sol;sys&sol;hashlib模块(十二)

    os模块 os.getcwd()  #获取当前工作路径 os.chdir(‘dirname1/dirname2/dirname3’) #改变当前脚本的工作路径,相当于cmd下的cd os.makedi ...

  3. collection&comma;random&comma;os&comma;sys&comma;序列化模块

    一.collection 模块 python拥有一些内置的数据类型,比如 str,list.tuple.dict.set等 collection模块在这些内置的数据类型的基础上,提供了额外的数据类型: ...

  4. time&comma;datetime&comma;random&comma;os&comma;sys&comma;hashlib&comma;logging&comma;configparser&comma;re模块

    #-----time模块----- print(help(time)) #打印time帮助文档 print(time.time()) #打印时间戳 1569824501.6265268 time.sl ...

  5. CSIC&lowbar;716&lowbar;20191116【常用模块的用法 time &comma;datetime&comma; random&comma; os&comma; sys&comma; hashlib】

    import time import datetime import os import sys import random import hashlib time模块 时间戳(Timestamp) ...

  6. python基础语法13 内置模块 subprocess&comma;re模块&comma;logging日志记录模块&comma;防止导入模块时自动执行测试功能&comma;包的理论

    subprocess模块: - 可以通过python代码给操作系统终端发送命令, 并且可以返回结果. sub: 子    process: 进程 import subprocess while Tru ...

  7. python基础语法12 内置模块 json&comma;pickle&comma;collections&comma;openpyxl模块

    json模块 json模块: 是一个序列化模块. json: 是一个 “第三方” 的特殊数据格式. 可以将python数据类型 ----> json数据格式 ----> 字符串 ----& ...

  8. 2019-7-18 collections&comma;time&comma;random&comma;os&comma;sys&comma;序列化模块&lpar;json和pickle&rpar;应用

    一.collections模块 1.具名元组:namedtuple(生成可以使用名字来访问元素的tuple) 表示坐标点x为1  y为2的坐标 注意:第二个参数可以传可迭代对象,也可以传字符串,但是字 ...

  9. python基础语法及知识点总结

    本文转载于星过无痕的博客http://www.cnblogs.com/linxiangpeng/p/6403991.html 在此表达对原创作者的感激之情,多谢星过无痕的分享!谢谢! Python学习 ...

随机推荐

  1. android 获取网络类型名称2G 3G 4G wifi

    首先工程Manifest文件要引用: <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ...

  2. javascript中apply&lpar;&rpar;和call&lpar;&rpar;方法的区别

    一.方法的定义 call方法: 语法:call(thisObj,Object)定义:调用一个对象的一个方法,以另一个对象替换当前对象.说明:call 方法可以用来代替另一个对象调用一个方法.call ...

  3. bzoj3035&colon; 导弹防御塔

    Description Freda的城堡——“Freda,城堡外发现了一些入侵者!”“喵...刚刚探究完了城堡建设的方案数,我要歇一会儿嘛lala~”“可是入侵者已经接近城堡了呀!”“别担心,rain ...

  4. AMH4&period;2 虚拟主机面板Tengine版本

    本人将原版Nginx更换成淘宝的Tengine 2.1.0 并且更换安装源,以保证面板正常安装 AMH4.2 修改版安装 ———————AMH为独立的一套LNMP/Nginx虚拟主机面板 安装请使用纯 ...

  5. python模块—optparse

    处理命令行参数 1 #-*-coding:utf-8-*- __author__ = 007 __date__ = 16 / 1 / 19 from optparse import OptionPar ...

  6. 学习笔记-echarts点击数据添加跳转链接

    原链接:http://echarts.baidu.com/demo.html#pie-rich-text 这个一段官方提供的实例. var weatherIcons = { 'Sunny': './d ...

  7. HashMap中的resize以及死链的情况

    之前我已经写过关于HashMap的内容了:http://www.cnblogs.com/wang-meng/p/7545725.html 我们都知道HashMap是线程不安全的, 如果多线程来访问会有 ...

  8. &lbrack;简洁&rsqb;JavaScript中添加、移除、移动、复制、创建和查找节点元素

    查找: document.getElementsByTagName通过标签名获取元素,不论有多少个都返回元素集合. document.getElementsByClassName通过类名获取元素,同上 ...

  9. JDBC-Statement&comma;prepareStatement&comma;CallableStatement的比较

    参考:https://www.cnblogs.com/Lxiaojiang/p/6708570.html JDBC核心API提供了三种向数据库发送SQL语句的类: Statement:使用create ...

  10. 设置EntityFramework中decimal类型数据精度

    EF中默认的decimal数据精度为两位数,当我们数据库设置的精度大于2时,EF将只会保留到2为精度. e.g. 2.1999将会被保存为2.20 网上找到常见的方法为重写DbContext的OnMo ...