常用模块

常用模块

在python的三种时间表现形式:

1.时间戳:给电脑看的,自1970-01-01 00:00:00到当前时间,计算了多少秒

2.格式化时间(format string):给人看的,返回的是时间的字符串 2002-01-11

3.格式化时间对象(struct time):返回的是一个元祖,元祖中有九个值:

分别是:年(%Y)、月(%m)、日(%d)、时(%H)、分(%M)、秒(%S)、一周的第几天、一年中的第几天,夏令时

时间模块

1.import time

 

2.import datetime

1.获取时间戳计算时间使用

   print(time.time())

2.获取格式化时间拼接用户时间格式并保存时使用

print(time.strftime('%Y-%m-%d'))     获取年月日

获取年月日时分秒

print(time.strfime('%Y-%m-%d %H:%M:%S'))

3.获取时间对象

print(time.localtime())

time.struct_time(tm_year=2019, tm_mon=11, tm_mday=16, tm_hour=14, tm_min=56, tm_sec=10, 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(2)   #睡眠2秒

获取当前时间的格式化时间

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

2019-11-16 15:09:24 time.struct_time(tm_year=2019, tm_mon=11, tm_mday=16, tm_hour=15, tm_min=9, tm_sec=24, tm_wday=5, tm_yday=320, tm_isdst=0)

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

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

2019-11-16 15:15:18

将字符串式的时间转成时间对象

res = time.strptime('2019-01-01','%Y-%m-%d')

print(res)


import hashlib
def pwd_md5(pwd):
   md5_obj = hashlib.md5()
   str1 = pwd
   md5_obj.update(str1.encode('utf-8'))
   #创造盐
   sal = '我怎么这么好看!'
   #加盐
   md5_obj.update(sal.encode('utf-8'))
   #得到一个加密后的字符串
   res = md5_obj.hexdigest()
   return 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)获取当前年月日

print(datetime.date.tody())

   2019-11-16

获取当前年月时分秒

print(datetime.datetime.tody())

   2019-11-16 15:30:23.188891

time_obj = datetime.datetime.tody()

print(type(time_obj))

print(time_obj.year)

2019

print(time_obj.month)

11

print(time_obj.day)

16

从索引0开始计算周一

UTC

print(time_obj.weekday()) #查看今天是周几 0-6

5 即周六

ISO

print(time_obj.isoweekday())#查看今天是周几1-7

6

UTC时区

北京时间

print(datetime.datetime.now())  查看当前时间

2019-11-16 15:52:27.321718

格林威治时间与北京时间相差8小时

print(datetime.datetime.utcnow())

2019-11-16 07:54:13.269957

日期/时间的计算

日期时间 = 日期时间 '+' or '-' 时间对象

时间对象 = 日期时间 '+ or '-' 日期时间

日期时间:

current_time = datetime.datetime.now()

print(current_time)

2019-11-16 16:00:51.265525

时间对象

获取7天时间

time_obj = datetime.datetime(days =7)

print(time_obj)

7 days, 0:00:00

获取当前时间7天后的时间
日期时间 = 日期时间 '+' or '-' 时间对象
later_time = current_time +time_obj

print(later_obj)

2019-11-23 16:08:27.891113
对象时间 = 日期时间 '+ or '-' 日期时间
time_new_obj = later_time - current_time
print(time_new_obj)
7 days, 0:00:00

import random(随机函数)

随机获取1-9中的任意数
res = random.randint(1,9)
print(res)
默认获取0-1之间的任意小数
res2 = random.random()
print(res2)
洗牌
将可迭代中的值进行乱序
list = ['红桃A''梅花A''红桃Q''方块K']
random.shuffle(list)
print(list)
随机获取可迭代对象中的某一个值
res3 = random.choice(list)
print(list)
需求:随机验证码
   需求:大小写字母、数字组合而成
   组合5位数的随机验证码
   
获取任意长度的随机验证码
def get_code(n)
   code = ''
   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(5)
print(code)
print(len(code))

import os 与系统交互的模块

需求:获取当前文件根目录
获取当前文件中的上一级目录
# DAY15_PATH = os.path.dirname(__file__)
# print(DAY15_PATH)
#
# # 项目的根目录,路径相关的值都用 “常量”
# BASE_PATH = os.path.dirname(DAY15_PATH)
# print(BASE_PATH)
#
# # 路径的拼接: 拼接文件 “绝对路径”
# TEST_PATH = os.path.join(DAY15_PATH, '老男孩老师们的写真集.txt')
# print(TEST_PATH)
#
# # 判断“文件/文件夹”是否存在:若文件存在返回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)

# 获取某个文件夹中所有文件的名字
teacher_list = os.listdir(r'D:项目路径python13期day15老男孩老师们的写真集')
print(teacher_list)

# enumerate(可迭代对象) ---> 得到一个对象,对象有一个个的元组(索引, 元素)
res = enumerate(teacher_list)
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())

import sys

获取当前的python解释器的环境变量捷径
print(sys.path)
将当前项目添加到环境变量中
BASE_PATH = os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_PATH)
获取cmd终端的命令行 python3 py文件 用户名 密码
print(sys.argv)  #返回的是列表['py文件','用户名','密码']
print('==' *100)
cmd_list = sys.argv
执行文件权限认证
if cmd_list[1] == 'tank' and cmd_list[2] == '123':
   print('通过验证')
   print('开始执行逻辑代码')
else
print('用户名或者密码错误,权限不足')

import hashlib

是一个加密模块,内置有很多算法

MD5:不可解密的算法(2018年以前)

摘要算法:摘要就是从某个内容中获取的加密字符串,摘要一样,内容就一定一样,保证唯一性

秘闻密码就是一个摘要

import hashlib

md5_obj = hashlib.md5()

print(type(md5_obj))

str1 = '123'

update中一定要传入bytes类型数据

md5_obj.update(str1.encode('utf-8'))
得到一个加密后的字符串
res = md5_obj.hexdigest()
print(res)
以上加密撞库可能会破解出真实密码
防止撞库问题:加盐
import hashlib
def pwd_md5(pwd):
   md5_obj = hashlib.md5()
   str1 = pwd
   md5_obj.update(str1.encode('utf-8'))
   #创造盐
   sal = '我怎么这么好看!'
   #加盐
   md5_obj.update(sal.encode('utf-8'))
   #得到一个加密后的字符串
   res = md5_obj.hexdigest()
   return res
#模拟用户登陆操作
#获取文件中的用户名与密码
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(passwod):
print('登陆成功')
else:
print('登陆失败')

 

原文地址:https://www.cnblogs.com/cyfdtz/p/11892288.html