10
今日内容总结
文件光标的实际应用
利用seek下的2模式 做到对文件的监控
代码实现
with open(r'a.txt','rb') as f:
f.seek(0,2) # 将光标移至最后
while True:
line = f.readline()
if len(line) = 0: # 说明没有新内容输入
time.split(0.5) # 0.5秒后执行 可让cpu得到休息
else:
print(line.decode('utf8'),end='')
硬盘修改数据的原理
硬盘所记录的数据相当于是刻在了硬盘上 只有前后可修改 想要修改中间的数据只可重新记录
# 硬盘删除数据是将该数据转变为自由态
# 此时的数据没有被真正的删除直到数据被覆盖才会被删除
文件内容修改的底层原理
方式一: 覆盖写
with open(r'a.txt','r',encoding='utf8') as f:
data = f.read()
with open(r'a.txt','r',encoding='utf8') as f1:
f1.write(data.replace('所需要换的数据','替换的数据内容'))
1.被替换的数据将直接被删除
2.文件中所有的与替换数据相同的数据都会被替换
方式二: 换地写
'''在另一个的地方写 在与源文件替换 '''
with open(r'a.txt','r',encoding='utf8') as f,\
open(r'a.txt.swap','w',encoding='utf8') as write_f:
for line in write_f:
write_f.write(line.replace('所需要替换的数据','替换的数据内容'))
# .swap 是重命名文件
函数
函数前戏
函数的作用就是创造一个可以提供反复使用的代码承载体
相同的代码可以反复执行
代码实现:
def 函数名(参数):
函数体代码
在后面创建完后直接输入函数名()便可反复使用
# 并不是要完全相同的代码 也可以根据传入的数据做出一点改变
函数的语法结构
def 函数名(参数):
"""函数注解"""
函数体代码
return
1.函数名 函数名与变量名一样 可以随意取 但尽量做到见名思议 方便后面的取用
2.参数 参数也可以不设置 主要的作用是规定要不要让外界的数据进来
3.函数体代码 可以乱写,但必须遵守语法结构,不然会报错
4.return 返回值使用完函数的一个反馈给使用者的数据 可有可无
函数的定义与调用
def 函数名(参数):
函数体代码
1.此过程为函数的定义阶段 此过程不执行函数体代码
2.函数只有在被调用时才会执行函数体代码
3.函数必须满足先定义 再使用
函数的分类
1.空函数
函数体代码为空 或者为pass或者...补全的即为空函数
空函数主要用于项目前期的功能框架的搭建
eg:
def name():
'''注册功能'''
pass
2.无参函数
定义函数没有设置参数
def www():
print('123456')
3.有参函数
定义函数在括号里写参数 调用时的括号用于传参数
def www(a):
print(a)
# 输入的参数是什么打印出来的结果就是什么
函数的返回值
1.返回值
返回值是函数执行完后反馈给使用者的信息
2.如何获取返回值
变量名 赋值符号 函数的调用
res = www()
# 获取返回值的步骤:
* 先定义函数
* 执行www()函数
* 再将返回值赋值给res
3.函数返回值的多种情况
3.1.函数体代码中若没有 return 默认返回none # none也算返回值
3.2.函数体代码中有 return 但是没有编写内容 也是返回none
3.3.函数体代码有 return 后面写的东西就是返回的值
3.4.函数体代码有 return 并且后面有多个数据值则会自动组成一个元组返回
3.5.函数体在执行到 return 将直接结束 # 与循环体代码执行到break一样
函数的参数
*****************************************************************************
形式参数
在函数定义阶段括号内填写的参数 简称'形参'
实际参数
在函数调用阶段括号内填写的参数 简称'实参'
'''
形参与实参的关系
形参相当于变量名 尽量做到见名思意 方便取用
def register(name,pwd):
pass
实参相当于数据值 在函数调用阶段与形参临时绑定 函数结束运行后便会自动断开
regiser('xiaochen',123)
形参name与xiaochen绑定
形参pwd与123绑定
'''
作业:
def zc():
while True:
name = input('请输入你的用户名>>>:')
psd = input('请输入你的密码>>>:')
with open(r'D:\zh\a.txt', 'r', encoding='utf8') as f:
for i in f:
name1, psd2 = i.split('|')
if name == name1:
print('用户名重复')
break
else:
with open(r'D:\zh\a.txt', 'a', encoding='utf8') as f1:
f1.write(name + '|' + psd + '\n')
print(f'{name}注册成功')
def dl():
with open(r'D:\zh\a.txt', 'r', encoding='utf8') as f:
name = input('请输入你的用户名>>>:')
psd = input('请输入你的面膜>>>:')
for i in f:
r_name, r_psd = i.split('|')
if name == r_name and psd == r_psd:
print('登录成功')
break
else:
print('用户名或密码错误')
while True:
print('''
1.输入1注册用户
2.输入2登录用户
3.输入3退出
''')
choice = input('请输入你的选择>>>:')
if choice == '1':
zc()
elif choice == '2':
dl()
elif choice == '3':
exit()
else:
print('没有该功能')