import os
def file_backups(file_name, path):# 备份的文件名file_back = file_name.split('\\')[-1]# 判断用户输入的内容是文件还是文件夹if os.path.isdir(file_name) is not True:with open(file_name, mode='r') as file_data:# 创建新文件 , 以只读的方式打开new_path = path + '/' + file_backwith open(new_path, 'w') as file_back:# 逐行复制源文件内容到新文件中for line_content in file_data.readlines():file_back.write(line_content)# 判断是目录还是文件
def judge(back_path, file_path):if os.path.isdir(file_path) is True:# 遍历当前目录下的文件file_li = os.listdir(file_path)for i in file_li:# 拼接文件名称new_file = file_path + '\\' + ifile_backups(new_file, back_path)else:# 是文件if os.path.exists((file_path)):file_backups(file_path, back_path)else:print("备份的文件不存在!")exit()# 备份目录
def backups_catalog():# 指定备份的目录back_path = input("请输入备份的目录:\n")file_path = input("请输入备份的文件:\n")# 指定目录不存在if os.path.exists(back_path) is False:os.mkdir(back_path)judge(back_path, file_path)print('备份成功!')# 指定目录存在else:judge(back_path, file_path)print('备份成功!')if __name__ == '__main__':backups_catalog()
"""
1.用户信息存储在文件中。
2.注册时判断用户是否已存在。
3.登录时比较用户的登录信息与文件中存储的信息是否一致。
(不使用正则,用文件读写函数和字符串操作相关知识实现)
4.注销
5.修改密码
"""
import osdef welcome():print("欢迎使用账户管理程序")print("1.用户注册")print("2.用户登录")print("3.用户注销")print("4.修改密码")print("5.退出")while True:option = input("请选择功能\n")# 用户注册if option == '1':register()# 用户登录elif option == '2':login()# 注销elif option == '3':cancel()# 修改密码elif option == '4':modify()elif option == '5':break# 将文件中的数据转换为字典
def convert_data():info_li = []with open('./info.txt', mode='r+', encoding='utf8') as f:info_data = f.readlines()for i in info_data:info_dict = dict()# 替换{ 和 } 并去掉空格step_one = i.replace('{', '').replace('}', '')# 以冒号进行分隔step_two = step_one.split(':')# 拼接字典info_dict["姓名"] = step_two[1].split(',')[0].replace("'", '').strip()info_dict["密码"] = step_two[2].replace("'", '').strip()# 保存到列表中info_li.append(info_dict)return info_li# 注册
def register():if os.path.exists('./info.txt') is not True:with open('./info.txt', mode='w', encoding='utf8') as f:f.write('')# 用户名列表name_li = []info_li = convert_data()# 接收注册信息person_info = {}name = input("请输入注册用户名:\n")# 获取用户列名列表for i in info_li:name_li.append(i['姓名'])# 判断用户是否存在if name in name_li:print('用户已注册')else:password = input("请输入注册密码:\n")person_info['姓名'] = nameperson_info['密码'] = password# 写入注册信息with open('./info.txt', mode='a+', encoding='utf8') as info_data:info_data.write(str(person_info) + '\n')# 登录
def login():if os.path.exists('./info.txt') is not True:print('当前无数据,请先注册')else:# 用户名列表name_li = []info_li = convert_data()name = input("请输入登录用户名:\n")password = input("请输入登录密码:\n")# 获取用户列名列表for i in info_li:name_li.append(i['姓名'])# 判断用户是否存在if name in name_li:# 获取修改用户的索引modify_index = name_li.index(name)# 判断密码是否正确if password == info_li[modify_index]['密码']:print('登录成功')else:print('用户名或密码不正确')else:print('用户名或密码不正确')# 注销
def cancel():if os.path.exists('./info.txt') is not True:print('当前无数据,请先注册')else:cancel_name = input("请输入注销的用户\n")cancel_password = input("请输入密码\n")# 用户名列表name_li = []info_li = convert_data()for i in info_li:name_li.append(i['姓名'])if cancel_name in name_li:# 获取注销用户的索引cancel_index = name_li.index(cancel_name)# 判断输入的密码是否正确if cancel_password == info_li[cancel_index]['密码']:info_li.pop(cancel_index)# 写入空数据with open('./info.txt', mode='w+', encoding='utf8') as f:f.write('')for i in info_li:with open('./info.txt', mode='a+', encoding='utf8') as info_data:info_data.write(str(i) + '\n')print('用户注销成功')else:print('用户名或密码不正确')else:print('注销的用户不存在')# 修改密码
def modify():if os.path.exists('./info.txt') is not True:print('当前无数据,请先注册')else:# 用户名列表name_li = []info_li = convert_data()modify_name = input("请输入用户名:\n")password = input("请输入旧密码:\n")# 获取用户列名列表for i in info_li:name_li.append(i['姓名'])# 判断用户是否存在if modify_name in name_li:# 获取修改密码用户的索引modify_index = name_li.index(modify_name)# 判断密码是否正确if password == info_li[modify_index]['密码']:# 修改密码new_password = input("请输入新密码\n")info_li[modify_index]['密码'] = new_passwordwith open('./info.txt', mode='w+', encoding='utf8') as f:f.write('')for i in info_li:with open('./info.txt', mode='a+', encoding='utf8') as info_data:info_data.write(str(i) + '\n')else:print("用户名或密码不正确")else:print("用户名或密码不正确")if __name__ == '__main__':welcome()

python入门第六章 信息安全策略-文件备份 用户账户管理相关推荐

  1. Python入门第三章--第一节:条件判断语句

    从这一节开始,我们就进入到了进阶的阶段,这一章是在前一章的基础上进行提高扩展的,从本章开始,我会在每一节的结尾留下作业,大家可以将作业提交到我的邮箱或者直接将作业提交到QQ群的群文件中,我将在QQ群中 ...

  2. python 入门第六课 class面向对象OOP

    面向对象编程 OOP编程是利用"类"和"对象"来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因一方面是因为它可以使程序的维护和扩展变得更简单,并且可 ...

  3. python入门第四章十大歌手 手机通讯录 神奇魔方阵 青春有你

    """ 场景预设:学校组织了这么一个比赛,设置了10名评委打分,为了防止作弊和恶意打分, 去掉最高分和最低分再计算平均分作为选手成绩. 本实例要求编写这样一个程序:记录评 ...

  4. python入门第三章敏感词替换 文字排版工具 文本进度条 进制转换

    sensitive_character = '你好' # 敏感词库 test_sentence = input('请输入一段话:') for line in sensitive_character: ...

  5. python入门第七章好友管理系统

    """ 好友管理程序 增加 删除 备注 展示 分组 数据存储结构:['王五', '张三', '赵柳', {'家人': ['李四','刘备']},{'同事': ['李龙', ...

  6. R语言统计入门第六章——回归与相关性

    回归与相关性 6.1简单线性回归 library(ISwR) attach(thuesen) The following objects are masked from thuesen (pos = ...

  7. webrtc 入门第五章 一对一视频通话实现

    webrtc 入门第五章 一对一视频通话实现 一.介绍 ​ 在前面的章节我们学习了如何操作本地的设备摄像头,麦克风等,学会了如何进行本地的流媒体操作如录制,下载,同步等.在第三第四章节学习了webrt ...

  8. R语言入门第六集 实验五:综合应用

    R语言入门第六集 实验五:综合应用 一.资源 [R语言]沈阳地铁数据处理及站间流量统计--R语言第五次实训 lubridate-轻松处理日期时间 数据整理-dplyr包(mutate系列) CEILI ...

  9. Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏

    Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏 即使是现在,很多初学游戏开发的同学,在谈到Unity的时候,依然会认为Unity只能用于制作3D游戏的.实际上,Unity在2013年发布 ...

最新文章

  1. 安全牛:“新一代SOC研究报告”之市场指南及技术指南点评
  2. idea中配置maven的骨架本地下载方式
  3. python中gui实现一个登录界面_Python:简单的登陆GUI界面
  4. Mysql的row_format
  5. Linux0.11内核剖析--内核体系结构
  6. CSS3 linear-gradient实现三角形
  7. java.lang.NoClassDefFoundError 怎么解决
  8. 建立可扩展的silverlight 应用框架 step-3
  9. Atitit android app 最佳实践2021目录1. Android strudio,,and viruse machine need down another... 11.1. P
  10. 【Scratch】进阶篇-《Scratch游戏开发》恐龙跳一跳
  11. 微信小程序视频基本操作
  12. 关于Python 向pdf添加印章效果的思考及实现
  13. ASP.NET 安全认证(二)——灵活运用 Form 表单认证中的 deny 与 allow 及保护 .htm 等文件...
  14. 手机虚拟键盘的获取按键的code值
  15. Linux导出Excel图片水印中文乱码解决
  16. UVM中p_sequencer和m_sequencer的用法及其区别
  17. 简智音科技:抖音与快手相比,谁的前景更好?
  18. 使用李跳跳·自动关闭运动校园广告
  19. LDAP 中的 RDN
  20. 初学Web前端会用到开发工具【零基础web前端入门视频教程】

热门文章

  1. 创建抽象类、_【Java视频教程】day16-抽象类
  2. OpenShift 4 - DevSecOps Workshop (Jenkins版)
  3. OpenShift 4 - CRC(Codeready Container)个人单机版 OpenShift 环境
  4. OpenShift 4之设置用户/组对项目的访问权限
  5. 使用实时摄像头预览的iOS对象检测(六)
  6. Visual Studio 2019 16.3 Preview 3 发布,使用 IntelliCode 重构更容易
  7. C#——后台管理端多级菜单的生成方式
  8. access成绩为非负数_初一数学期末复习,有理数应用题专训,正负数实际意义是关键...
  9. 训练效果不好的解决办法
  10. 坦克大战python_Python语言学了没用?那只能说你是真的没有精通了Python语言