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

[Python学习日记-27] 文件操作练习题解析

[Python学习日记-27] 文件操作练习题解析

简介

练习题1——全局替换程序

练习题2——模拟登陆

简介

练习题1——全局替换程序

一、题目

  • 写一个脚本,允许用户按以下方式执行时填入参数,即可以对指定文件内容进行全局替换

python your_script.py old_str new_str filename 

源文件:

马纤羽 深圳 173 50 137442345234

乔亦菲 广州 172 52 158234235252

罗梦竹 北京 175 49 186234234212

[Lucy] 北京 170 48 186234237654

岳妮妮 深圳 177 54 188353245535

贺婉萱 深圳 174 52 189334344522

叶梓萱 上海 171 49 180424323244

  • 替换完毕后打印替换了多少处内容 
  • 提示:读取程序后的字符串需要使用 sys 库下的 argv,使用方法如下
# 以上面的命令为例:python your_script.py old_str new_str filename 
f = open(sys.argv[3],'r')    # 等于 f = open('filename','r')

二、答案

import os,sys    # sys 会把后面输入的 old_str、new_str、filename 变成一个列表——>[old_str,new_str,filename] 
f = open(sys.argv[3],'r',encoding='utf-8')
f_new = open(sys.argv[3]+".new",'w',encoding='utf-8')# 循环文件
for line in f:# 进行对比替换if sys.argv[1] in line:line = line.replace(sys.argv[1],sys.argv[2])# 无需修改和已修改的字符写入新文件当中f_new.write(line)
f.close()
f_new.close()
os.replace(sys.argv[3]+".new",sys.argv[3])    # .new 后缀的文件替换源文件
print(sys.argv[1],"replace to",sys.argv[2])

代码输出如下:

 

练习题2——模拟登陆

一、题目

  • 用户输入帐号密码进行登陆
  • 用户信息保存在文件内

源文件:user_login

0:0:user1:admin1234        # 错误次数:是否锁定:用户名:密码

  • 用户密码输入错误三次后锁定用户,下次再登录,检测到是被锁定的用户禁止登陆

二、答案

# -*- coding:utf-8 -*-
import osf_r = open('user_login','r')
f_w = open('user_login.new','w')user_name = input("请输入用户名:")
user_passwd = input("请输入密码:")
user_info = []
is_replace = 0
for line in f_r.readlines():user_info = line.split(":")if user_name == user_info[2].strip() and user_info[1].strip() == '1':print("用户已被锁定,请联系管理员")elif user_name == user_info[2].strip() and user_passwd == user_info[3].strip():print("登陆成功")breakelif user_name == "" or user_passwd == "" or user_name != user_info[2].strip():is_replace = 1print("用户名或密码错误!")breakelif user_name == user_info[2].strip() and user_passwd != user_info[3].strip() and user_name != "":user_info[0] = str(int(user_info[0]) + 1)if user_info[0].strip() == '3':user_info[1] = '1'f_w.write(":".join(user_info))user_name = ""print("用户名或密码错误!")breakf_w.write(line)
f_r.close()
f_w.close()if is_replace == 0:os.replace('user_login.new', 'user_login')
else:os.remove('user_login.new')

代码输出如下:

登陆成功

用户名或密码为空(记录不会增加)

用户名或密码错误(用户名错误时记录不会增加)

密码输错三次之后会锁定账号

 

锁定后再登陆会提示账号已被锁定

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • python新手的五个练习题
  • 计算机毕业设计 基于SpringBoot的小区运动中心预约管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • SpringBoot+Vue技术框架开发的ADR智能监测系统源码,Java语言的药品不良反应智能监测系统源代码
  • Vue工程师面试题
  • Homebrew安装与切换下载源
  • vue3中把封装svg图标为全局组件
  • 解决SVN蓝色问号的问题
  • Android开发高频面试题之——kotlin篇
  • 网络层协议 —— IP协议
  • MyBatis 源码解析:TypeHandler 设计与自定义实现
  • 《深度学习》卷积神经网络CNN 原理及其流程解析
  • Ubuntu 22.04.5 LTS 发布下载 - 现代化的企业与开源 Linux
  • 如何在Linux Centos7系统中挂载群晖共享文件夹
  • Kalman算法、扩展卡尔曼滤波(EKF)和无迹卡尔曼滤波(UKF)的比较
  • RuntimeError: Maximum Recursion Depth Exceeded - 递归深度超限的完美解决方案
  • 【译】JS基础算法脚本:字符串结尾
  • $translatePartialLoader加载失败及解决方式
  • css选择器
  • ES2017异步函数现已正式可用
  • Git初体验
  • Hibernate【inverse和cascade属性】知识要点
  • HTML-表单
  • js继承的实现方法
  • linux安装openssl、swoole等扩展的具体步骤
  • mongodb--安装和初步使用教程
  • mongo索引构建
  • Spring Boot快速入门(一):Hello Spring Boot
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 产品三维模型在线预览
  • 给初学者:JavaScript 中数组操作注意点
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 树莓派 - 使用须知
  • 小程序测试方案初探
  • 一、python与pycharm的安装
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 组复制官方翻译九、Group Replication Technical Details
  • ​configparser --- 配置文件解析器​
  • ​iOS安全加固方法及实现
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​如何使用QGIS制作三维建筑
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (07)Hive——窗口函数详解
  • (09)Hive——CTE 公共表达式
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (day 12)JavaScript学习笔记(数组3)
  • (Matlab)使用竞争神经网络实现数据聚类
  • (八)c52学习之旅-中断实验
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (含笔试题)深度解析数据在内存中的存储
  • (剑指Offer)面试题34:丑数
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...