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

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

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

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

#!/usr/bin/env python3

# -*- coding:utf-8 -*-

# 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 功能

#!/usr/bin/env python3

# -*- coding:utf-8 -*-

#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 os

with 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 os

with 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')

三.全局替换程序:

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

替换完毕后打印替换了多少处内容

#!/usr/bin/env python3

# -*- coding:utf-8 -*-

import sys

import os

if 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 = 0

for line in read_f:

line = line.replace(old_str,new_str)

write_f.write(line)

num = line.count(new_str)

count += 1

totle = count * num

print("一共替换了%s处内容" % totle)

os.remove(filename)

os.rename(filename_swap,filename)

四.模拟登陆:

用户输入帐号密码进行登陆

用户信息保存在文件内

用户密码输入错误三次后锁定用户,下次再登录,检测到是这个用户也登录不了

user_list.txt

wss:123:1

alex:456:1

jay:789:1

#!/usr/bin/env python3

# -*- encoding: utf8 -*-

import getpass

import os

user_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 += 1

print("\n用户名错误")

elif user_dict[user]["lockaccount"] > 0:

print("\n用户已被锁定,请联系管理员解锁后重新尝试")

break

else:

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 = True

else:

count += 1

print('\n密码错误')

continue

if 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)

学会python的基础操作题_第3章 Python基础-文件操作函数 文件操作 练习题相关推荐

  1. python编写程序解方程_第2章 Python初步 课后题

    [单选题]建设中国特色社会主义,把我国建设成为富强.民主.文明.和谐.美丽的社会主义现代化强国,是我国各族人民的( ) [简答题]案例系统的测试报告,提交时间为9月28日,上午九点之前 [单选题]一份 ...

  2. python123第四章第五题_第五章 Python 函数

    第1章 为什么要使用函数 #1.代码的组织结构不清晰,可读性差 #2.遇到重复的功能只能重复编写实现代码,代码冗余 #3.功能需要扩展时,需要找出所有实现该功能的地方修改之,无法统一管理且维护难度极大 ...

  3. 2020年上海市高等学校信息技术水平考试试卷_三级_数据科学技术及应用_模拟卷_四、操作题_答案

    2020年上海市高等学校信息技术水平考试试卷_三级_数据科学技术及应用_模拟卷_四.操作题_答案 (本试卷考试时间 150 分钟) 答案是自己做的,经验证,可成功运行. 内容仅供学习交流,不可转载. ...

  4. Pytorch ——基础指北_叁 [Pytorch API 构建基础模型]

    Pytorch --基础指北_叁 系列文章目录 Pytorch --基础指北_零 Pytorch --基础指北_壹 Pytorch --基础指北_贰 Pytorch --基础指北_叁 文章目录 Pyt ...

  5. Python入门到精通【精品】第一章 - Python概述

    Python入门到精通[精品]第一章 - Python概述 1. Python语言历史 2. Python语言特点 3. Python的下载和安装 3.1. Python的下载 3.2. Python ...

  6. 小甲鱼python入门014课后题_小甲鱼零基础入门学习Python-014

    ==========ClassNote========= 1.接触过C语言的朋友应该知道,在C语言中,字符串和字符是两个不同的概念(C语言用单引号表示字符,双引号表示字符串).但在Python中并没有 ...

  7. python智慧树判断题_智慧树知到_大数据分析的python基础_判断题答案

    智慧树知到_大数据分析的python基础_判断题答案 答案: 更多相关问题 强心苷中毒先兆症状A.一定次数的早搏B.窦性心律低于60次/minC.视色障碍D.房室传导阻滞E.室性心动 强心苷在临床上可 ...

  8. python计算机二级操作题_计算机二级Python考试心得分享体会总结

    前言: 我叫夏某鸣,德州学院,大二学生,在学习python之前,学习过c语言,数据结构,做过嵌入式开发,有一点功底,但是不多,通过学习不同的语言的编程也锻炼了一些思维,但涉猎面还是不广,也不怎么精通, ...

  9. python难度大的题_早看少被坑!Python 最难的问题

    超过十年以上,没有比解释器全局锁(GIL)让Python新手和专家更有挫折感或者更有好奇心. 未解决的问题 随处都是问题.难度大.耗时多肯定是其中一个问题.仅仅是尝试解决这个问题就会让人惊讶.之前是整 ...

最新文章

  1. 如何使窗体不重复被打开
  2. github page + jekyllrb 搭建新博客
  3. dreawever与php做网页,教程方法;Drea、mweaver CS5更改代码颜色方法电脑技巧-琪琪词资源网...
  4. 区块链学习笔记:D02 区块链的技术发展历史和趋势
  5. 计算机专业中职好就业不,内江计算机专业中职好不好
  6. 使用QML编写舒尔特表小程序
  7. opencv3 与opencv2不同之处
  8. 安卓psp模拟器联机教程_安卓PSP模拟器评测:蜘蛛侠2
  9. 三级等保测评,如何通过验收
  10. leetcode 5390. 数青蛙(C++)
  11. 服务器怎么多开虚拟机,服务器多开虚拟机操作系统
  12. WARN: Establishing SSL connection without server‘s identity verification is not recommended
  13. 水溶性CdseTe ZnS量子点
  14. 夏天推荐凉快的地方不嫌多!四明山这里更是集凉爽与好玩一起
  15. 如何提高代码质量,或者说高质量代码的特征是什么
  16. 手游大话藏宝阁找不到服务器,大话西游手游藏宝阁指定交易在哪里 藏宝阁怎么没有指定我...
  17. 计算机网络故障与维护方法,试论计算机网络故障处理及维护方法
  18. 西门子S7200/300/400以太网通讯处理器选型
  19. php 获取url扩展名,php 从url中获取文件扩展名
  20. 快播团队悄然崛起:连获2大奖,业内充分肯定,抢先布局千亿市场

热门文章

  1. LightGBM如何保存模型?
  2. Windows下Core Audio APIs的使用简介
  3. 即时通讯音视频开发(三):视频编解码之编码基础
  4. python使用xlrd库处理excel__API常见基本操作
  5. Android自定义Dialog及与Activity的交互
  6. Intel图形库Mesa的持续集成
  7. 搞懂分布式技术8:负载均衡原理剖析
  8. urllib的实现---cookie处理
  9. acm之简单博弈 Nim Bash Wythoff
  10. JAVA struts2