1、OS模块
os模块是与操作系统交互的模块
下面主要以例说明讲解:import os# 需求:获取当前项目的根目# 获取当前文件的上一层DAY15_PATH = os.path.dirname(__file__) # /Users/tophan/python练习/day15# print(DAY15_PATH)
# #项目的根目录、路径相关的值都用'常量' # BASE_PATH = os.path.dirname(DAY15_PATH) #/Users/tophan/python练习 # print(BASE_PATH) # 路径的拼接:拼接文件'绝对路径' TEST_PATH = os.path.join(DAY15_PATH, '火影写真.txt') # /Users/tophan/python练习/day15/老男孩教师写真.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) #删除文件夹:只能删除'空的文件夹' # DIR_PATH = os.path.join(DAY15_PATH, '火影写真集') # os.rmdir(DIR_PATH) #获取某个文件夹中所有文件的名字 teacher_list = os.listdir('/Users/tophan/python练习/day15/火影写真集') print(huoying_list) #enumerate(可迭代对象)---->得到一个对像,对象有一个个的元组(索引,元素) res = enumerate(huoying_list) print(list(res))
2、sys模块
sys模块是与python解释器交互的模块
import sys import os # 获取当前的Python解释器的环境变量路径 print(sys.path) # 将当前项目添加到环境变量中 BASE_PATH = os.path.dirname(os.path.dirname(__file__)) sys.path.append(BASE_PATH) # 获取cmd终端的命令行 python3 py文件 用户名 密码 print(sys.argv) # 返回的是列表['']
3、hashlib 模块:
hashlib模块是一个加密模块;
内置了很多算法
- MD5(*******): 不可解密的算法(2018年以前)
摘要算法:
- 摘要是从某个内容中获取的加密字符串
- 摘要一样,内容就一定一样: 保证唯一性
- 密文密码就是一个摘要
import hashlib md5_obj = hashlib.md5() #构造一个hashlib的对象 print(type(md5_obj)) str1 = '1234' #update 中一定要传入bytes类型数据 md5_obj.update(str1.encode('utf-8')) #对指定的字符串进行加密 #得到一个加密后的字符串 res =md5_obj.hexdigest() #拿到加密字符串 print(res) #以上操作装库有可能会破解真实密码 #防止撞库:加盐 import hashlib md5_obj = hashlib.md5() #得到一个hashlib 对象 str1 = '1234' #指定一个被加密字符串 md5_obj.update(str1.encode('utf-8')) #对指定的字符串进行加密 res = md5_obj.hexdigest() #拿到加密字符串 print(res)
def pwd_md5(pwd): global res md5_obj = hashlib.md5() str1 = pwd md5_obj.update(str1.encode('utf-8')) # update 中一定要传入bytes类型数据 # 创造盐 sa1 = 'tank怎么这么帅啊' # 加盐 md5_obj.update(sa1.encode('utf-8')) # update 中一定要传入bytes类型数据 # 得到一个加密后的字符串 res1 = md5_obj.hexdigest() print(res1) return res1 pwd = input('请输入用户密码').strip() user_str2 = f'tank:{pwd_md5(pwd)}' # def register(*regs, **kwregs): # # # user_str1 = f'tank:1234' 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() # 1234 # 校验用户名与密码是否一致 if username == file_user and file_pwd == pwd_md5(password): # pwd_md5('1234') print('登陆成功') else: print('登陆失败')