文件处理:
文件处理的基本步骤 with语法 自动执行f.close代码 文件打开模式 控制文件读写操作的模式 r 只读 w 只写 a 追加 控制文件读写内容的模式 t b 文件操作的方法 控制文件指针移动 文件修改的两种方式
什么是文件
文件是操作系统提供给用户或者说应用程序操作硬盘的一种功能
为何要用文件
读写文件就是在读写硬盘:我们对文件的读写操作都会被操作系统转换成硬盘的读写
如何用文件
f = open(r'a.txt',mode = 'rt',encoding = 'utf-8') # f 是 文件对象 文件句柄 # 文件对象:既有功能又有数据 # f 控制操作系统 打开硬盘内的a.txt 之后f打开的这个内容就存在应用程序里了 f.close() # f 控制操作系统 关闭a.txt文件 f就失去打开的内容 两者失去连接 应用程序 -> 操作系统 -> 硬盘
文件打开模式
1.控制文件读写操作的模式 r模式:只读模式,如果文件不存在则报错,文件存在则文件指针处于文件开头 w模式:只写模式,如果文件不存在则创建空文档,文件存在则清空,文件指针处于开头 在打开了文件不关的情况下,连续的write写入,新写的内容永远跟在后面 换行在内容后面加\n a模式:只追加写模式,在打开了文件不关的情况下,连续的write写入,新写的内容永远跟在后面 在打开了文件关闭然后重新打开的情况下,a模式永远写在后面 可读可写模式(不建议),例如:mode = (r+t) # mode(读写操作模式+读写内容模式) 中间加个+号 具有读写操作模式的特性,例如w模式打开文件文件会清空 2.控制文件读写内容的模式 t模式:读写都是以字符串为单位的,只适用于文本文件,必须指定encoding参数 直接输出字符串 b模式:读写都是以bytes为单位的,一定不能指定encoding参数 直接原始输出 ''' f = open(r'a.txt',mode = 'rt',encoding = 'utf-8') mode只写r,默认输出rt模式 f.write(' '.encode('utf-8')) # b模式输入字符串 print(f.read()) print('123456') print(f.read()) # 文件指针到末尾,读不出来 f.readable # 判断是否可读,返回布尔值 f.writeable # 判断是否可写,返回布尔值 # 文件拷贝功能 # 方案1 with open('1.mp4',mode='rb')as f1,open(r'D:\123.mp4',mode='wb') as f2: res = f1.read() f2.write(res) # 方案2 with open('a.txt',mode'rt',encoding('utf-8')) as f1: for line in f1: f2.write(line)
文件操作的其他方法
1.读取文件,从头到尾,输出列表 f.readlines() 2.读取文件,一次读一行 f.readline() 3.输入列表,与readlines对应,类似用for循环一个一个输出列表内容 f.writelines(['111\n','222\n']) 4.短时间内多次操作会将多次操作存到一起一次性进行 使用flush(刷新)会直接将存储的操作进行 f.flush()
控制文件指针移动
''' 大前提:只有t模式下的f.read(n)中的n代表的是字符个数 除此之外,关于指针的移动,单位都是字节bytes ''' 1.截断文件,保留你所在指针往前或往后n个字节,其余删除 with open('a.txt',mode'r+t',encoding('utf-8')) an f: f.truncate(n) 2. f.seek(字节个数,0) f.seek(字节个数,1)0.... f.seek(字节个数,2)