接着昨天的文件操作,还有一些结尾的东西。
1.混合文件操作:
先看一下我操作的文件,后面的很多操作都在这个文件下进行的:

这是我乱编的一个文本文件,以下操作就是对这个文件进行的。

# w+:写读   r+:读写,写在文件后面   a+:追加读
f = open("小姐姐联系方式", "r+")
print(f.read())
print(f.tell())  # 237
f.seek(f.tell())  # 不加会默认在文件后直接加
f.write("哦买嘎")  #运行程序"小姐姐"文本后面就添加了 哦买嘎

这里只操作了常用的"r+",感兴趣的可以自己练一练另外两个。

2.文件修改:

#  文件修改:不是覆盖,而是往后挤
f = open("小姐姐联系方式", "r+")# 1. 加载到内存
data = f.read()
new_data = data.replace("岳妮妮", "haha") #运行后,文本里的岳妮妮被haha替换# 2.清空文件
f.seek(0)
f.truncate()  # 截断文件# 3. 把新内容写回硬盘
f.write(new_data)
f.close()

3.练习:全局检索替换

#全局文本检索替换脚本
import sysprint(sys.argv)
old_str = sys.argv[1]
new_str = sys.argv[2]
filename = sys.argv[3]
# 1. 加载到内存
f = open(filename, "r+")
data = f.read()
# 2. 计数和替换
old_str_count = data.count(old_str)
new_data = data.replace((old_str, new_str))
# 3.清空文件
f.seek(0)
f.truncate()
# 4.把新内容写到文件
f.write(new_data)
f.close()
print(f"成功替换字符‘{old_str}'to'{new_str}',共{old_str_count}处...")

这是练习文本修改的步骤操作,可以按自己需求模仿去练一练。

4.设计用户登录程序
(要求:若用户密码输入错误3次,则锁定账号)

首先,这是我自己定义的一个用户信息仓库:(姓名,密码,账户状态)

这里账户状态为1,则为锁定状态,为0则为正常状态。


#1.确定 在文件里存储的账号信息结构#2. 把数据读到内存,为方便调用,改成列表结构list或字典
accounts = {# 定义一个空字典
}
f = open("account.db", "r")
for line in f:line = line.strip().split(",")  # strip 吃空格accounts[line[0]] = line# 3. 搞个循环。要求用户输入信息,判断while True:user = input("Username:").strip()if user not in accounts:print("该用户未注册...")continueelif accounts[user][2] == "1":print("该账户已锁定,请联系客服解决...")continuecount = 0while count < 3:  # 控制密码输入次数passwd = input("Password:").strip()# 去账号的字典里判断密码是否正确if passwd == accounts[user][1]:print(f"Welcome{user}...登录成功...")exit("bye bye...")else:print("密码错误....")count += 1if count == 3:print(f"输错了{count}次密码,锁定账号{user}...")# 1.先改内存中字典里的账号信息的用户状态# 2.把字典里的数据信息按源数据格式存回文件accounts[user][2] = "1"   # 1代表账户锁定f2 = open("account.db", "w")for user, val in accounts.items():line = ",".join(val) + "\n"f2.write(line)f2.close()exit("bye bye...")

这是程序运行效果:


这分别是账户锁定登录失败,密码输入错误,账号锁定以及正常成功登录,要求的功能都成功时下。

5.初识函数:

 #函数: 减少重复代码; 使程序变得可扩展; 使程序变得易维护
# 函数的定义:
def Add():  # 函数名print("这是加法")Add()  # 调用函数def Add(a, b):  # 带参数c = a + bprint(c)Add()

自定义函数:

def hello(name, age):print(f"hello,my name is {name},this year {age} years old..")hello("DaoNan", "22")

函数运行效果:

Python笔记-day6相关推荐

  1. tkinter 笔记: radiobutton 选择按钮(莫烦python笔记)

    1 主体框架还是那个主体框架 window = tk.Tk() window.title('my window') window.geometry('500x500') 2 设置tkinter的文字变 ...

  2. tkinter 笔记:列表部件 listbox (莫烦python 笔记)

    1  主体框架 主体框架部分还是 import tkinter as tkwindow = tk.Tk() #创建窗口window.title('my window') #窗口标题window.geo ...

  3. python笔记: 生成器

    元素按照某种算法推算出来,我们在循环的过程中不断推算出后续的元素 不必创建完整的list,从而节省了大量的空间 这种一边循环一遍计算的机制,称之为生成器generator 1 列表生成器 把列表生成式 ...

  4. python输出字体的大小_Toby的Python笔记 | 预备知识:安装openpyxl学做电子表格

    Toby的Python笔记 | 预备知识:安装openpyxl学做电子表格 Python 需要创建和读取excel表里面的数据,需要用 openpyxl 这个包,今天安装好备用. 首先,进入C命令窗口 ...

  5. c++ 冒泡排序_干货|python笔记1-冒泡排序

    面试的时候经常有面试官喜欢问如何进行冒泡排序?这个问题相信可以难倒一批的同学,本篇就详细讲解如何用python进行冒泡排序. 基本原理 01概念: 冒泡排序是一种交换排序,它的基本思想是:两两比较相邻 ...

  6. python笔记-1(import导入、time/datetime/random/os/sys模块)

    python笔记-6(import导入.time/datetime/random/os/sys模块) 一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其它内 ...

  7. python慕课笔记_MOOC python笔记(三) 序列容器:字符串、列表、元组

    Python Python开发 Python语言 MOOC python笔记(三) 序列容器:字符串.列表.元组 容器概念 容器是Python中的重要概念,分为有序与无序. 有序容器也称为序列类型容器 ...

  8. python笔记之Cmd模块

    python笔记之Cmd模块 Cmd类型提供了一个创建命令行解析器的框架,默认情况下,它使用readline来进行交互式操作.命令行编辑和命令完成.使用cmd创建的命令行解释器循环读取输入的所有行并且 ...

  9. Python笔记002-列表推导式

    Python笔记002-列表推导式 以下是我学习<流畅的Python>后的个人笔记,现在拿出来和大家共享,希望能帮到各位Python学习者. 首次发表于: 微信公众号:科技老丁哥,ID: ...

最新文章

  1. 计算机专业认证协会,我校计算机科学与技术专业接受教育部中国工程教育专业认证协会专家组现场考查...
  2. vue上传图片组件编写
  3. 试题 历届试题 买不到的数目(dp/数学)
  4. CodeForces - 1550E Stringforces(二分+状压dp)
  5. python帮助系统函数_【Python】【基础知识】【内置函数】【help的使用方法】
  6. mybatisplus 强制制空 空覆盖原来的字符串
  7. Java增强之并发编程
  8. [BZOJ1059][ZJOI2007]矩阵游戏
  9. Java可变引用,Java – 对可变对象的易失性引用 – 对对象的字段的更新对所有线程都是可见的...
  10. 人工智能在安全漏洞方面的应用_智慧消防平台的智慧在哪方面?
  11. 整理最新java面试宝典2019
  12. cnpack 菜单顺序
  13. 【黄啊码】微信小程序+php实现即时通讯聊天功能
  14. 怎么查询网站最近的cdn服务器,如何查看网站是否cdn加速
  15. 方框加对勾怎么输入_如何打出带方框的对号
  16. GIS应用技巧之去除遥感影像黑边
  17. win10自带ubuntu桌面_windows10开启 linux子系统桌面,巨详细,值得一藏
  18. KeyShot 实时光线追踪三维渲染软件
  19. 音乐剧推荐-<<爱在思念的两端>>
  20. 盘点不可忽视的14家大数据创业公司

热门文章

  1. 润乾报表v4-调整报表内文字行间距
  2. Drupal第三方模块汇集(一)
  3. Python数组排序
  4. Oracle 性能优化的基本方法概述
  5. Java Map中如何获取Map集合中所有value呢?
  6. JS字符串截取方法汇总(slice、substring、substr等)
  7. 如何自定义listview自带下划线的长度和颜色
  8. matlab 除去振动,Matlab讨论区 - 声振论坛 - 振动,动力学,声学,信号处理,故障诊断 - Powered by Discuz!...
  9. 物理cpu和逻辑cpu的区别
  10. java SE(一)——入门基础