当前位置: 首页 > news >正文

Python 作业:递归遍历文件系统与加密登录系统实现

大家好,今天来分享我 Python 第三次作业的两个核心任务:用递归实现文件系统遍历,以及用加密模块和文件模拟实现用户登录系统。在完成过程中,我还踩了一个典型的 “目录名称无效” 的坑,顺便把排错过程也分享出来~


一、任务一:递归遍历路径下所有文件与文件夹

需求说明

给定一个路径,遍历该路径下所有文件和文件夹,遇到文件直接打印完整路径,遇到文件夹则递归进入继续遍历,最终输出所有文件的路径。

初始实现与报错

最开始我直接把单个文件路径传给了函数,结果程序直接抛出了NotADirectoryError错误,报错信息是:

原因很简单:os.listdir()只能接收文件夹路径,而我传入的beacon_report.log是一个文件,程序无法对文件执行 “列出目录内容” 的操作。

修正后的完整代码及运行结果

核心知识点解析

  1. os.listdir(path):列出指定路径下的所有文件和文件夹名称,但不包含完整路径。
  2. os.path.join(path, item):安全拼接路径,自动适配不同系统的路径分隔符(Windows 用\,Linux 用/)。
  3. os.path.isdir(path)/os.path.isfile(path):判断路径是文件夹还是文件,是实现递归的关键。
  4. 递归逻辑:遇到文件夹时,函数会调用自身,以子文件夹路径为参数继续遍历,直到所有层级的文件都被打印。

二、任务二:加密登录系统

需求说明

使用 Python 的加密模块(hashlib)对用户密码进行加密,用文本文件模拟数据库存储用户信息,实现注册和登录功能,不存储明文密码。

完整实现代码

核心知识点解析

  1. 密码加密:使用hashlib.md5()对密码进行哈希处理,将明文密码转换为不可逆的十六进制字符串,文件中只存储加密后的密码,保障用户信息安全。
  2. 文件操作
    • 注册时以"a"(追加)模式打开文件,新用户信息不会覆盖旧数据。
    • 登录时以"r"(只读)模式读取文件,逐行比对用户名和加密密码。
  3. 异常处理:捕获FileNotFoundError,当用户还未注册时给出友好提示,避免程序崩溃。

三、作业总结与反思

  1. 递归遍历的关键细节

    • 必须先判断路径是否存在、是否为文件夹,再执行os.listdir(),避免直接传入文件路径导致报错。
    • 递归的终止条件是 “遇到文件时打印并返回”,否则会无限递归。
  2. 登录系统的安全优化点

    • 目前使用 MD5 加密,实际项目中建议使用更安全的bcrypthashlib.pbkdf2_hmac算法,并加入盐值(salt)防止彩虹表破解。
    • 可以增加用户名重复校验、密码强度验证等功能,提升系统健壮性。

这两个任务让我对 Python 的文件操作、递归思想和加密模块有了更直观的理解,尤其是排错的过程,也让我意识到了路径类型判断的重要性。后续可以尝试把两个功能结合起来,实现一个 “文件管理系统 + 用户登录” 的小项目,进一步巩固所学知识~

http://www.jsqmd.com/news/1002182/

相关文章:

  • 免费解锁9大网盘高速下载:网盘直链下载助手完整使用指南
  • 缓存穿透、缓存击穿、缓存雪崩的区分与完整解决方案
  • 2026年成都桶装水配送服务口碑观察:哪些供应商值得关注? - 优质品牌商家
  • Android虚拟相机完全指南:5分钟掌握摄像头内容替换技术终极教程
  • 2026年南昌K金回收推荐 昌顺黄金回收专业高价全城免费上门(第2版) - 本地品牌推荐
  • 3步解决Windows软件兼容性问题:开源工具的终极指南
  • Visual C++运行库维护计划
  • 2026年成都开荒保洁服务哪家强?从众、鑫杰鑫、优净等8家机构综合评测 - 优质品牌商家
  • 考研数学救命稻草:三步搞定1的∞次方极限,别再死记硬背e的公式了
  • 如何高效使用智能激活工具:Windows与Office免费激活完整方案
  • 别再让单片机直接驱动电机了!用ULN2003驱动步进电机的保姆级教程(附Arduino代码)
  • STM32F103C8T6用HAL库实现USB CDC串口,CubeMX一键生成+中断收发
  • 并联Buck-boost直流微网下垂控制模型仿真研究(Simulink仿真实现)
  • Navicat密码解密终极指南:三步找回遗忘的数据库连接密码
  • 给孩子挑增高床垫,我踩过的坑真不少 - 深圳市民HLL
  • 2026年北京市场精选:五家值得信赖的多功能会议室音响服务商深度解析 - 品牌鉴赏官2026
  • SRWE终极指南:突破游戏窗口限制的深度技术解析
  • [深度学习]Kaggle:The Value of Programming Competitions in the Age of AI
  • 如何10分钟搞定抢票神器配置:大麦助手自动化工具实战指南
  • 3分钟完成Windows和Office激活:智能脚本终极解决方案
  • 2026美加墨世界杯新规
  • MC68HC16S2总线时序深度解析:从参数表到稳定硬件设计
  • 终极网盘直链下载助手:免费解锁9大网盘高速下载的完整教程
  • 2026年 绝缘PC片厂家深度分析:广东/上海模组底部绝缘片及端板绝缘PC片优质供应商选购框架 - 品牌发掘
  • [深度学习]Kaggle:Random Forest optimization full process Python code
  • 如何解决B站视频下载难题:DownKyi免安装版全攻略
  • 3个关键功能,让Snap Hutao成为你原神冒险的最佳伙伴
  • GD32F30x看门狗配置避坑指南:独立看门狗和窗口看门狗到底怎么选?
  • 失业保险金
  • Milvus 向量检索服务 + SpringBoot 实战:电商商品语义检索与相似商品推荐