day23 作业

1、把登录与注册的密码都换成密文形式

import hashlib
def register():
m = hashlib.md5()
username = input("请输入要注册的账号:")
password = input("请输入要注册的密码:")
password2 = input("请再次输入的密码:")
if password==password2:
m.update(password.encode("utf-8"))
res = m.hexdigest()
print(res)
with open("db.txt","a",encoding="utf-8")as f:
f.write(f'{username}:{res}\n') def login():
user_inp = input("请输入你的账号:")
pwd_inp = input("请输入你的密码:")
with open("db.txt","r",encoding="utf-8")as f1:
user = hashlib.md5()
user.update(pwd_inp.encode("utf-8"))
res = user.hexdigest()
for line in f1:
username,password = line.strip().split(":")
if user_inp ==username:
if res == password:
print("登录成功")
return
else:
print('密码错误')
else:
print("账号不存在")
register()
login()

2、文件完整性校验(考虑大文件)

def official_file_hx():
with open("official_file","rt",encoding="utf-8")as f :
l = [20, 30, 40]#l根据需求改变
m = hashlib.md5()
for i in l :
f.seek(i,0)
res = f.read(5)
m.update(res.encode("utf-8"))
res = m.hexdigest()
return res def download_file_hx():
with open("download_file","rt",encoding="utf-8")as f :
l = [20,30,40]
m = hashlib.md5()
for i in l:
f.seek(i,0)
msg = f.read(5)
m.update(msg.encode("utf-8"))
res = m.hexdigest()
if res == official_file_hx():
print("文件完整")
else:
print("文件不完整") download_file_hx()

3、注册功能改用json实现

import json

def register():
m = hashlib.md5()
username = input("请输入要注册的账号:")
password = input("请输入要注册的密码:")
password2 = input("请再次输入的密码:")
if password==password2:
m.update(password.encode("utf-8"))
res = m.hexdigest()
print(res)
with open("db.txt","a",encoding="utf-8")as f:
# f.write(f'{username}:{res}\n')
user_dict = {username:res}
json.dump(user_dict, f)
register()

4、项目的配置文件采用configparser进行解析

text.ini
[section1]
k1 = v1
k2:v2
user=egon
age=18
is_admin=true
salary=31
[section2]
k1 = v1
import configparser

config = configparser.ConfigParser()

config.read('text.ini')

print(config.sections())

print(config.options('section1'))

print(config.items('section1'))

res= config.get('section1','is_admin')

print(res,type(res))

print(config.getint('section1','age'))

print(config.getfloat('section1','age'))

print(config.getboolean('section1','is_admin'))

day23 作业的更多相关文章

  1. day23作业

    # 作业: # 1.把登录与注册的密码都换成密文形式 info = {"tom":"202cb962ac59075b964b07152d234b70"} def ...

  2. day23作业详解

    1.题目 2.题目详解 点击查看详细内容 1. 1-1 封装 把功能封装到类中 class Message(object): def email(self):pass def msg(self):pa ...

  3. Spark Streaming揭秘 Day23 启动关闭源码图解

    Spark Streaming揭秘 Day23 启动关闭源码图解 今天主要分析一下SparkStreaming的启动和关闭过程. 从Demo程序出发,主要聚焦在两段代码: 启动代码: 关闭代码: 启动 ...

  4. day23单例模式 , 日志处理 , 项目结构目录

    # day23笔记 ## 一.补充,作业 ### 1.字符串格式化 ```pythonmsg = "我是%(n1)s,年龄%(n2)s" % {'n1': 'alex', 'n2' ...

  5. python 作业

    Linux day01 计算机硬件知识整理 作业要求:整理博客,内容如下 编程语言的作用及与操作系统和硬件的关系 应用程序->操作系统->硬件 cpu->内存->磁盘 cpu与 ...

  6. python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)

    类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...

  7. SQLServer2005创建定时作业任务

    SQLServer定时作业任务:即数据库自动按照定时执行的作业任务,具有周期性不需要人工干预的特点 创建步骤:(使用最高权限的账户登录--sa) 一.启动SQL Server代理(SQL Server ...

  8. 使用T-SQL找出执行时间过长的作业

        有些时候,有些作业遇到问题执行时间过长,因此我写了一个脚本可以根据历史记录,找出执行时间过长的作业,在监控中就可以及时发现这些作业并尽早解决,代码如下:   SELECT sj.name , ...

  9. T-SQL检查停止的复制作业代理,并启动

        有时候搭建的复制在作业比较多的时候,会因为某些情况导致代理停止或出错,如果分发代理时间停止稍微过长可能导致复制延期,从而需要从新初始化复制,带来问题.因此我写了一个脚本定期检查处于停止状态的分 ...

随机推荐

  1. Netty 源码解析: Netty 的 ChannelPipeline

    ChannelPipeline和Inbound.Outbound         我想很多读者应该或多或少都有 Netty 中 pipeline 的概念.前面我们说了,使用 Netty 的时候,我们通 ...

  2. Java I/O模型及其底层原理

    Java I/O是Java基础之一,在面试中也比较常见,在这里我们尝试通过这篇文章阐述Java I/O的基础概念,帮助大家更好的理解Java I/O. 在刚开始学习Java I/O时,我很迷惑,因为网 ...

  3. [C#.NET 拾遗补漏]05:操作符的几个骚操作

    阅读本文大概需要 1.5 分钟. 大家好,这是极客精神[C#.NET 拾遗补漏]专辑的第 5 篇文章,今天要讲的内容是操作符. 操作符的英文是 Operator,在数值计算中习惯性的被叫作运算符,所以 ...

  4. C和C++中static的比较

    using namespace std; class A{ private: static int a;//由static修饰的变量仅仅是一个声明,不能在此处进行初始化,需要在类的外部初始化. voi ...

  5. asp.net Mvc 路由详解,非常详细.

    关于路由的理解 为什么要定义路由?路由的定义在开发中的工作量非常小,但是非常重要,因为任何请求都离不开路由. 各个电商网站的 URL 使用非常灵活,都离不开路由的定义,请大家参考几家电商的 URL 如 ...

  6. [每日一题2020.06.09] leetcode #97 交错字符串 dp

    题目链接 利用动态规划的思想, 对于每种状态(i, j)来说都有(i-1, j) 和 (i,j-1) 需要注意的问题 : 初始化的问题,先把i=0和j=0的状态都初始化后才可以进行dp否则发生数组越界 ...

  7. 如何用 Python 和 API 收集与分析网络数据?

    摘自 https://www.jianshu.com/p/d52020f0c247 本文以一款阿里云市场历史天气查询产品为例,为你逐步介绍如何用 Python 调用 API 收集.分析与可视化数据.希 ...

  8. yii2.0AR两表联查

    首先,建两个关联表. 表一 -- Table structure for article -- ---------------------------- DROP TABLE IF EXISTS `a ...

  9. cb07a_c++_迭代器和迭代器的范围

    cb07a_c++_迭代器和迭代器的范围c++primer第4版https://www.cnblogs.com/txwtech/p/12309989.html--每一种容器都有自己的迭代器--所有的迭 ...

  10. java递归遍历树结构目录

    目录实体 private int id; private int pid; private String name; 递归遍历方法 private void getTree(Menu menu ,Li ...