以t模式为基础进行内存操作
1、r(默认的操作模式):只读模式,当文件不存在时报错,当文件存在时文件指针跳到开始位置
with open('a.txt', mode='rt', encoding='utf-8') as f1:
print('第一次读'.center(50, '*'))
res1 = f1.read() # 把所有内容从硬盘读入内存
print(res1)
# with open('c.txt', mode='rt', encoding='utf-8') as f1:
print('第二次读'.center(50, '*'))
res2 = f1.read()
print(res2)
# 案例:从文件中读取账号密码
inp_username = input('please input your name: ').strip()
inp_password = input('please input your password: ').strip()
# 验证
with open('user.txt', mode='rt', encoding='utf-8') as f:
for line in f:
username, password = line.strip().split(':')
if inp_username == username and inp_password == password:
print('login successful')
break
else:
print('username or password error')
use.txt的内容:
potato:123
lili:111
zhangsan:222
2、w;只写模式,当文件不存在时,会创建空文件,当文件存在时会清空文件,指针位于开始位置
with open('d.txt', mode='wt', encoding='utf-8') as f:
# f.read() # 报错,不可读
f.write('牛牛牛\n') # 不是覆盖,是清空再写入(慎用)
强调1: 在以w模式打开文件没有关闭的情况下,新写的内容总是跟着旧内容之后 如果重新以w模式打开文件,则会清空内容
3、a:只追加写,在文件不存在时会创建空文档,在文件存在时,文件指针会直接跳到末尾
with open('e.txt', mode='at', encoding='utf-8') as f:
# f.read() # 报错,不可读
f.write('牛牛牛1\n') #
f.write('牛牛牛2\n')
f.write('牛牛牛3\n')
强调 w 模式与 a 模式的异同:
相同点:在打开的文件不关闭的情况下,连续的写入,新写的内容总会跟在前写的内容之后
不同点:以 a 模式重新打开文件,不会清空原文件内容,会将文件指针直接移动到文件末尾,新写的内容永远写在最后
# 注册功能
name = input('your name: ')
pwd = input('your password: ')
with open('db.txt', mode='at', encoding='utf-8') as f:
f.write('{}:{}\n'.format(name, pwd))