文件操作补充
1.flush() 将内存中的数据立刻刷到硬盘 相当于ctrl+s 2.readable() writeable() 判断文件是否可读可写 with open(r‘userinfo.txt‘,‘a‘,encoding=‘utf8‘) as f: print(f.readable()) # True print(f.writable()) # False 3.writelines() 括号内放列表 多个元素都会被依次写入
方法一:用新的内容把原来的内容覆盖掉 with open(r‘a.txt‘,‘r‘,encoding=‘utf8‘) as f: data = f.read() with open(r‘a.txt‘,‘w‘,encoding=‘utf8‘) as f: f.write(data.replace(‘jason‘,‘tony‘)) 方法二:创建一个新文件 将老文件内容写入新文件 过程中完成修改
之后将老文件删除 将新文件命名成老文件 从而达到修改的效果 import os with open(r‘a.txt‘,‘r‘,encoding=‘utf8‘) as f,open(r‘a.txt.backend‘,‘w‘,encoding=‘utf8‘) as f1: for line in f: f1.write(line.replace(‘tony‘,‘jason‘)) os.remove(r‘a.txt‘) os.rename(r‘a.txt.backend‘,r‘a.txt‘)
函数就相当于是工具 提前定义好后续可以反复使用,避免了代码冗余的情况 eg:修理工需要用扳手,买了扳手之后就可以一直用,不用每次都买一把 函数的语法结构 def 函数名(参数1,参数2): ‘‘‘函数的注释‘‘‘ 函数体代码 return 函数的返回值 1.def 定义函数的关键字 2.函数名 函数名的命名与变量名保持一致 见名知意 3.参数 函数在使用之前还可以接收外部传入的参数 4.函数的注释 类似于产品说明书 5.函数体代码 整个函数主要功能逻辑 是整个函数的核心 6.return 执行完函数之后可以给调用者一个反馈结果 函数的基本使用 函数的使用一定要先定义后使用!!!
如果在函数的代码前使用了该函数会报错
def get_info():
print(123)
get_info()
(get_info()就等于def get_info():后面的代码,即print(123))
登录界面
while True: choice=input(‘注册1/登陆2:‘) if choice==‘1‘: print(‘注册‘) username=input(‘用户名:‘) password=input(‘密码:‘) with open(r‘c.txt‘,‘r‘,encoding=‘utf8‘) as f: for line in f: username1=line.split(‘|‘)[0] if username == username1: print(‘用户名已被注册‘) continue else: print(‘注册成功‘) with open(r‘c.txt‘,‘a‘,encoding=‘utf8‘) as f: f.write(‘%s|%s\n‘%(username,password)) continue elif choice==‘2‘: print(‘登陆‘) username2=input(‘用户名:‘) password2=input(‘密码:‘) with open(r‘c.txt‘,‘r‘,encoding=‘utf8‘) as f: for line in f: username1,password1=line.split(‘|‘) if username1==username2 and password1.strip(‘\n‘)==password2: print(‘登陆成功‘) break else: print(‘用户名或密码错误‘) else: print(‘?‘) continue