打开文件的三种纯净模式r,w,a
控制操作文件内容格式的两种模式:t(默认的) b
t/b模式只能r、w、a连用,不能单独使用。
t模式:文本模式
1、读写文件都是以字符串为单位的
2、只能针对文本文件
3、必须指定encoding参数
b二进制模式:
1.读写文件都是以bytes/二进制为单位
2.可以正对所有文件
3.一定不能指定encoding参数
打开文件r模式详解
1.r只读模式;当文件不存在的话直接报错,文件存在文件内的指针直接跳到文件开头
with open(r'wdb.txt',mode='rt',encoding='utf-8') as f: data=f.readline(7)#从文件开头开始读,数字参数的读取当前行的字数,截取相应数字字符串,若超出的字数,直接读当前行数 print(data) print(f.readline())#从上一个指针开始读,读取
例子,用户认证功能(简单):
name = input('请输入用户名:').strip() pwd = input('请输入密码').strip() with open(r'db.txt',mode='rt',encoding='utf-8') as f: for line in f:#循环读取单行内容,直到结束为止 u,p = line.strip(' ').split(':')#根据读取内容,整理出需要的内容 if name ==u and pwd == p:#当用户名与密码都相同 print('登陆成功') break else:#当for没有被break,则执行 print('用户名不存在')
w只写模式:
1.当文件不存在的情况下创建新的文件,当文件存在时,则创建新的文件将源文件覆盖。
文件指针依旧在开头。
with open('b.txt',mode='wt',encoding='utf-8') as f: print(f.writable()) print(f.readable()) f.write('你好 ') f.write('我好 ') # 强调:在文件不关闭的清空下,后写的内容一定跟着前写内容的后面 f.write('大家好 ') f.write('111 222 333 ')
a只追加写模式: 在文件不存在时会创建空文档,文件存在会将文件指针直接移动到文件末尾
注册实例
name = input('请输入你的用户名:').strip() pwd = input('请输入密码:').strip() with open(r'db.txt',mode='at',encoding='utf-8') as f: f.write('%s:%s '%(name,pwd))
上述模式都是t模式下操作
b的情况下的操作:都是以二进制单位,可以读取任意文件
拷贝工具(简单):
src_file=input('源文件路径: ').strip() dst_file=input('目标文件路径: ').strip() with open(r'%s' %src_file,mode='rb') as read_f,open(r'%s' %dst_file,mode='wb') as write_f: for line in read_f: # print(line) write_f.write(line)