当前位置: 首页 > 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.rkmt.cn/news/1513965.html

相关文章:

  • 免费解锁9大网盘高速下载:网盘直链下载助手完整使用指南
  • STM32F103C8T6用HAL库实现USB CDC串口,CubeMX一键生成+中断收发
  • 2026年成都开荒保洁服务哪家强?从众、鑫杰鑫、优净等8家机构综合评测 - 优质品牌商家
  • 给孩子挑增高床垫,我踩过的坑真不少 - 深圳市民HLL
  • 终极网盘直链下载助手:免费解锁9大网盘高速下载的完整教程
  • 如何解决B站视频下载难题:DownKyi免安装版全攻略
  • 3个关键功能,让Snap Hutao成为你原神冒险的最佳伙伴
  • 2026年研磨液实力厂家:广东金刚石粗磨精磨研磨液与镜面抛光液生产商深度解析 - 品牌发掘
  • 2026年成都四害消杀市场格局分析:从灭鼠到白蚁防治的行业实测与趋势解读 - 优质品牌商家
  • 从Flask到Scrapy:盘点那些用Python Hook提升开发效率的真实场景与避坑指南
  • MC9S08GT系列8位MCU:低功耗架构与丰富外设的嵌入式经典设计解析
  • Zotero GPT终极指南:如何用AI智能插件5分钟打造高效文献助手
  • 3分钟上手:英雄联盟玩家的智能游戏助手完全指南
  • AI 驱动的会议效率提升:从语音转写到行动项提取的工程实践
  • 5分钟解决日文游戏乱码:Locale-Emulator终极配置指南
  • 56800TDC开发套件实战指南:从硬件安装到CodeWarrior环境搭建
  • 2026年上海松江区权威金条回收+银条回收机构推荐:称重准 报价实 - 沪上贵金属口碑推荐官
  • 别再死记硬背公式了!图解OpenCV C++灰度变换:线性、对数、伽马变换的本质与视觉原理
  • 汽车电子MCU选型与开发实战:MPC5646C架构解析与应用指南
  • 别再死记硬背了!用Wireshark抓包实战,帮你彻底搞懂TCP确认与重传(附谢希仁习题解析)
  • ESP32/STM32可用的双模无线CNC雕刻固件,含蓝牙+WiFi完整驱动与G代码执行能力
  • 如何拯救损坏的二维码?免费网页工具QRazyBox终极恢复指南
  • 卡梅德生物技术快报|兔单克隆抗体应用实战:禽源病原 IFA 检测全流程拆解
  • 告别人工值守!AI客服智能体搭配知识库实现服务提效
  • 如何用5分钟搭建i茅台自动预约系统:终极免费解决方案
  • 深度解析ExplorerPatcher:3大实战技巧让你的Windows桌面效率提升50%
  • NoSleep终极指南:让Windows永远保持清醒的轻量级神器
  • 3台机器、40分钟、零停机:Nacos生产集群搭建全纪录
  • 114、【Agent】【OpenCode】项目配置(package.json 和 bun.lock)
  • 7-Zip-zstd:如何选择最佳压缩算法实现性能提升