zoukankan      html  css  js  c++  java
  • 模块进阶(一)

    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('登陆失败')
  • 相关阅读:
    比特币and区块链
    C#汽车租赁系统 完整版
    C#托盘程序设置
    网络电视精灵项目
    C#文件操作 File(静态类)
    深入解读XML解析
    ListView 控件总结
    DataGridView 的使用总结
    动态添加节点
    IrisSkin2.dll 添加皮肤
  • 原文地址:https://www.cnblogs.com/xy-han/p/11894664.html
Copyright © 2011-2022 走看看