day23作业

# 1、把登录与注册的密码都换成密文形式
'''
user.txt:
yu:202cb962ac59075b964b07152d234b70
alex:250cf8b51c773f3f8dc8b4be867a9a02
ego:68053af2923e00204c3ca7c6a3150cf7
'''
import hashlib
user_dic ={}
# 读取用户账户文件内容
def select(username):
    with open('user.txt',mode='r',encoding='utf-8') as f:
        for line in f:
            user_data = line.strip().split(':')
            if username in line:
                return user_data
# 保存用户账户文件内容
def save(username,password):
    with open('user.txt','a',encoding='utf-8') as f1:
        f1.write(f'{username}:{password}\n')
# 登录
def login():
    while True:
        username = input('请输入账号:').strip()
        user_data = select(username)
        if not user_data:
            print("账号不存在,请重新输入")
            continue
        userpwd = input('请输入密码:').strip()
        if hashlib.md5(userpwd.encode('utf-8')).hexdigest() == user_data[1]:
            print('登陆成功')
            break
        else:
            print('密码错误,请重新输入')
# 注册
def regist():
    while True:
        username = input('请输入账号:').strip()
        user_data = selrect(username)
        if user_data:
            print("账号已存在,请重新注册")
            continue
        userpwd = input('请输入密码:').strip()
        userpwd1 = input('请确认密码:').strip()

        if userpwd == userpwd1:
            userpwd = hashlib.md5(userpwd1.encode('utf-8'))
            userpwd = userpwd.hexdigest()
            save(username,userpwd)
            print('注册成功')
            break
        else:
            print('两次密码有误,请重新输入')


# 2、文件完整性校验(考虑大文件)
import hashlib
def foo():
    data = b''
    with open('a.txt',mode='rb') as f:
        f.seek(10, 0)
        res = f.read(3)
        data += res
        f.seek(50, 0)
        res = f.read(2)
        data += res
        f.seek(66, 0)
        res = f.read(33)
        data += res
        f.seek(122, 0)
        res = f.read(66)
        data += res
        f.seek(380, 0)
        res = f.read(111)
        data += res
        data = hashlib.md5(data)
        data = data.hexdigest()
        return data
# 3、注册功能改用json实现
# 注册
# 保存用户账户文件内容
'''
user.json:
{"yu": "202cb962ac59075b964b07152d234b70", "alex": "250cf8b51c773f3f8dc8b4be867a9a02",
 "egon": "68053af2923e00204c3ca7c6a3150cf7", "yuding": "202cb962ac59075b964b07152d234b70"}
'''
import json
import hashlib
def selecter(username):
    with open('user.json','r',encoding='utf-8') as f1:
        user_data = json.load(f1)
        if username not in user_data:
            return user_data
def saver(user_data):
    with open('user.json','w',encoding='utf-8') as f2:
        json.dump(user_data,f2)
# 登录
def register():
    while True:
        username = input('请输入账号:').strip()
        user_data = selecter(username)
        if not user_data:
            print("账号已存在,请重新注册")
            continue
        userpwd = input('请输入密码:').strip()
        userpwd1 = input('请确认密码:').strip()

        if userpwd == userpwd1:
            userpwd = hashlib.md5(userpwd1.encode('utf-8'))
            userpwd = userpwd.hexdigest()
            user_data[username] = userpwd
            saver(user_data)
            print('注册成功')
            break
        else:
            print('两次密码有误,请重新输入')
register()
# 4、项目的配置文件采用configparser进行解析
'''
setting.ini:
import os
[根目录]
BASE_PATH = os.path.dirname(os.path.dirname(__file__))
[小说目录信息路径]
STORY_PATH = os.path.join(DB_PATH, 'story_class.txt')
[小说存放文件路径]
FICTION_DIR = os.path.join(DB_PATH, 'fictions')
[数据库文件路径]
DB_PATH = os.path.join(BASE_PATH, 'db')
[db.txt信息路径]
DB_TXT_PATH = os.path.join(DB_PATH, 'db.txt')
[日志文件的路径]
LOG_PATH = os.path.join(BASE_PATH, 'log', 'log.txt')
'''
import configparser
config = configparser.ConfigParser()
config.read('setting.ini')
# 获取sections
print(config.sections())
# 获取获取某一section下的所有options
print(config.options('gen'))
# 获取某一section下的items
print(config.items('xiaoshuomulu'))
# 获取所有section下的items
for i in config.sections():
    print(config.items(i))
# 获取具体的值
res=config.get('gen','BASE_PATH')
print(res,type(res)) # 获取字符串类型
res=config.getint('gen','BASE_PATH')
print(res,type(res)) # 获取int类型
res=config.getfloat('gen','BASE_PATH')
print(res,type(res)) # 获取flaot类型
res=config.getboolean('gen','BASE_PATH')
print(res,type(res)) # 获取布尔类型

猜你喜欢

转载自www.cnblogs.com/yding/p/12608102.html