一.利用b模式,编写一个cp工具,要求如下:

  1. 既可以拷贝文本又可以拷贝视频,图片等文件

  2. 用户一旦参数错误,打印命令的正确使用方法,如usage: cp source_file target_file

提示:可以用import sys,然后用sys.argv获取脚本后面跟的参数

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# cp工具
import sys
if len(sys.argv) != 3:print("usage: cp source_file target_file")sys.exit()
else:source_file, target_file = sys.argv[1], sys.argv[2]with open(source_file,"rb") as read_f,open(target_file,"wb") as write_f:for line in read_f:write_f.write(line)

二.Python实现 tail -f 功能

#tail -f工具
import sys,time
if len(sys.argv) != 2:print("usage: tail file_name")sys.exit()
else:file_name = sys.argv[1]with open(file_name,'rb') as f:f.seek(0,2) # 每次都从文件末尾开始读while True:line = f.readline()if line:print(line.decode('utf-8'),end='') # 读取的每一行都去掉行尾的换行符time.sleep(1)

有待优化,每次打开应该显示最后10行。

三.文件的修改

文件的数据是存放于硬盘上的,因而只存在覆盖、不存在修改这么一说,我们平时看到的修改文件,都是模拟出来的效果,具体的说有两种实现方式:

  • 方式一:将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器)
import oswith open('a.txt') as read_f,open('.a.txt.swap','w') as write_f:data=read_f.read() #全部读入内存,如果文件很大,会很卡data=data.replace('alex','SB') #在内存中完成修改write_f.write(data) #一次性写入新文件os.remove('a.txt')
os.rename('.a.txt.swap','a.txt')
  • 方式二:将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖源文件
import oswith open('a.txt') as read_f,open('.a.txt.swap','w') as write_f:for line in read_f:line=line.replace('alex','SB')write_f.write(line)os.remove('a.txt')
os.rename('.a.txt.swap','a.txt')

三.全局替换程序:

  • 写一个脚本,允许用户按以下方式执行时,即可以对指定文件内容进行全局替换
  • 替换完毕后打印替换了多少处内容
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import sys
import osif len(sys.argv) != 4:print("usage: python3 replace old_str new_str filename")sys.exit()
else:old_str = sys.argv[1]new_str = sys.argv[2]filename = sys.argv[3]filename_swap = sys.argv[3] + ".swap"with open(filename,"r",encoding="utf-8") as read_f,open(filename_swap,"w",encoding="utf-8") as write_f:count = 0for line in read_f:line = line.replace(old_str,new_str)write_f.write(line)num = line.count(new_str)count += 1totle = count * numprint("一共替换了%s处内容" % totle)os.remove(filename)os.rename(filename_swap,filename)

四.模拟登陆:

  • 用户输入帐号密码进行登陆
  • 用户信息保存在文件内
  • 用户密码输入错误三次后锁定用户,下次再登录,检测到是这个用户也登录不了

user_list.txt

wss:123:1
alex:456:1
jay:789:1
import getpass
import osuser_dict = {}
with open("user_list.txt", "r", encoding="utf-8") as user_list_flie:for line in user_list_flie.readlines():user_list = line.strip().split(":")# print(user_list)_user = user_list[0].strip()_pwd = user_list[1].strip()_lockaccount = int(user_list[2].strip())user_dict[_user] = {"user": _user, "pwd": _pwd, "lockaccount": _lockaccount}# print(user_dict[_username])# print(user_dict)exit_flag = False
count = 0
while count < 3 and not exit_flag:user = input('\n请输入用户名:')if user not in user_dict:count += 1print("\n用户名错误")elif user_dict[user]["lockaccount"] > 0:print("\n用户已被锁定,请联系管理员解锁后重新尝试")breakelse:while count < 3 and not exit_flag:pwd = getpass.getpass('\n请输入密码:')# pwd = input('\n请输入密码:')if pwd == user_dict[user]["pwd"]:print('\n欢迎登陆')print('..........')exit_flag = Trueelse:count += 1print('\n密码错误')continueif count >= 3:  # 尝试次数大于等于3时锁定用户if user == "":print("\n您输入的错误次数过多,且用户为空")elif user not in user_dict:print("\n您输入的错误次数过多,且用户 %s 不存在" % user)else:user_dict[user]["lockaccount"] += 1# print(user_dict[user]["lockaccount"])with open("user_list.txt", "r", encoding="utf-8") as user_list_file, open("use_list.txt.swap", "w",encoding="utf-8") as new_user_list_file:for new_line in user_dict:new_user_list = [str(user_dict[new_line]["user"]), str(user_dict[new_line]["pwd"]),str(user_dict[new_line]["lockaccount"])]# print(new_user_list)user_str = ":".join(new_user_list)print(user_str)new_user_list_file.write(user_str + "\n")os.remove("user_list.txt")os.rename("use_list.txt.swap", "user_list.txt")print("\n您输入的错误次数过多,%s 已经被锁定" % user)

4道Python基础文件操作函数 练习题相关推荐

  1. 第三章 Python基础——文件操作函数

    3.1三元运算 三元运算又称三目运算,是对简单条件的简写 if 条件成立:val=1 else:val=2 改成三元运算: val=1 if条件成立 else 2 3.2字符编码转换 编码的种类情况: ...

  2. 学会python的基础操作题_第3章 Python基础-文件操作函数 文件操作 练习题

    一.利用b模式,编写一个cp工具,要求如下: 1. 既可以拷贝文本又可以拷贝视频,图片等文件 2. 用户一旦参数错误,打印命令的正确使用方法,如usage: cp source_file target ...

  3. Python基础-文件操作

    Python基础-文件操作 1.文件的打开和关闭 # 1.打开文件 # 默认r模式 只读 文件不存在,报错 # f = open('a.txt')# w模式 写权限 # 如果文件不存在,就会创建文件 ...

  4. python基础-文件操作(10)

    一.什么是文件 等等这些都叫做文件,各种格式的.但不仅仅限制于这些. 二.文件的作用 大家应该听说过一句话:"好记性不如烂笔头". 不仅人的大脑会遗忘事情,计算机也会如此,比如一个 ...

  5. Python基础--文件操作

    文件操作通常用来存储程序结果,以便下次可以直接使用,不必要重新运行一遍.文件操作最基本的三步:1.打开文件或者新建文件  2. 读或者写  3 关闭文件流保存数据. Python 访问模式如下: 打开 ...

  6. python读文件每一行、并把这行替换-python基础--文件操作实现全文或单行替换

    python修改文件时,使用w模式会将原本的文件清空/覆盖.可以先用读(r)的方式打开,写到内存中,然后再用写(w)的方式打开. 替换文本中的taste 为 tasting Yesterday whe ...

  7. python 基础文件操作

    实时刷新到硬盘里 f= open('hh','w',encoding='utf8') f.write('gyftyftft') f.write('hghgh\njkkjk') f.flush()#实时 ...

  8. 5道python基础中while循环练习题

    1. 使用while循环输出1 2 3 4 5 6 8 9 10 count=0 while count <10:count+=1print(count) 2. 求1-100的所有数的和 cou ...

  9. 第3章 文件操作-函数练习题

    '''1.编码问题i请说明python2 与python3中的默认编码是什么?答:python2默认编码是ascii python3默认编码是:utf-8 ii为什么会出现中文乱码?你能列举出现乱码的 ...

最新文章

  1. 1041 Be Unique
  2. JdbcTemplate中queryForObject方法返回空结果或不正确结果数量的解决方法
  3. filebeat+elk简单搭配
  4. 如何在pycharm添加扩张工具
  5. 收集的48个Shell脚本小技巧
  6. 小博老师解析Java核心技术 ——JSwing绘图技术
  7. 【Python可视化】Windows 10系统上Pyecharts安装教程
  8. vue-cli@2的原理解析
  9. 户口所在地代码查询_毕业生如何查询档案存放地及存档问题?
  10. win10怎么去掉计算机里百度云,主编教你win10系统清除百度云盘盘符的修复方法...
  11. Linux系统编程 -- exec函数族
  12. 实战分享声卡效果调试都用那些效果器插件
  13. php 开源 博客,推荐常用PHP开源博客TOP10
  14. 单因素方差分析的计算步骤
  15. 聚合支付第三方支付通道
  16. ESP32实战小项目-小气象站
  17. Android设置iptable实现外网访问
  18. umi 约定式路由 关于 history.goBack() 的奇奇怪怪问题
  19. 棋牌游戏前后端技术介绍
  20. 实现页面刷新(全局刷新)

热门文章

  1. CSS魔法堂:说说Float那个被埋没的志向
  2. 汉诺塔--(数据结构)
  3. cocos2d-x plist使用
  4. SmartQuery WebPart 2.0 发布。
  5. 能简单才不简单,仿Flickr.com:基于Flash+jQuery的一次性划选多文件并上传
  6. 【修正】销售开票BAPI实例:BAPI_BILLINGDOC_CREATEMULTIPLE
  7. AUTHORITY-CHECK常用事务代码
  8. Hiveduino编程电子积木平台产品介绍宣传视频
  9. BAPI_CUSTOMERRETURN_CREATE 创建退货订单
  10. 钢材种类有哪些?怎么分类