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

硬盘修改数据的原理

硬盘所记录的数据相当于是刻在了硬盘上 只有前后可修改 想要修改中间的数据只可重新记录
# 硬盘删除数据是将该数据转变为自由态 
# 此时的数据没有被真正的删除直到数据被覆盖才会被删除

image

文件内容修改的底层原理

方式一:  覆盖写
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('没有该功能')
posted @ 2022-10-09 18:30  早点早点灬  阅读(50)  评论(0)    收藏  举报