文件操作
文件操作:
打开文件,读写文件,操作文件内容:
写入文件操作:(把大象装进冰箱)
1.打开文件 open() #1.打开冰箱门
2.向文件中添加内容 write() #2.把大象塞进去
3.关闭文件 close() #3.关闭冰箱
读取文件操作:(把大象从冰箱中取出来)
1.打开文件 open() #1.打开冰箱门
2.读取文件内容 read() #2.把大象拿出来
3.关闭文件 close() #3.把冰箱门带上
#逐个介绍文件操作相关的函数
open() 打开或者建立文件
格式:open('文件路径','打开方式',encoding = '设置字符集')
打开方式:
基础模式:
w w模式 write 写入模式
1.文件不存在则新建文件,文件存在则打开并且清空文件
2.文件的指针指向文件的开头
1 ''' 2 1.打开文件 3 2.向文件中添加内容 4 3.关闭文件 5 ''' 6 7 #1.打开文件 8 fp = open('write.txt','w',encoding = 'utf-8' ) 9 print(fp,type(fp)) 10 #输出结果:<_io.TextIOWrapper name='write.txt' mode='w' encoding='utf-8'> <class '_io.TextIOWrapper'> 11 12 #2.向文件中添加内容 13 fp.write('人生苦短,我用python') 14 15 #3.关闭文件 16 fp.close()
r r模式 read 读取模式
1.文件不存在则报错,文件已存在则打开文件
2.文件的指针指向文件的开头
1 ''' 2 1.打开文件 3 2.读取文件内容 4 3.关闭文件 5 ''' 6 7 #1.打开文件 8 fp = open('write.txt','r',encoding= 'utf-8') 9 #print(fp,type(fp)) 10 11 #2.读取文件内容 12 data = fp.read() 13 print(data) 14 #输出结果:人生苦短,我用python 15 16 #3.关闭文件 17 fp.close()
x x模式 xor 异或模式
1.文件不存在则新建文件,文件已存在则报错
2.文件的指针指向文件的开头
a a模式 append 追加模式
1.文件不存在则新建文件,文件已存在则打开文件
2.文件指针指向文件的末尾
扩展模式:
b b模式 bytes bytes模式
+ plus模式 增强模式
文件操作模式:
w,r,a,x
wb,rb,ab,xb
w+,r+,a+,x+
wb+,rb+,ab+,xb+
文件指针:程序操作文件的光标(我们看不见 不是我们使用的光标)
1 #open函数 2 3 #w模式 4 #open('test1.txt','w') 5 6 #r模式 7 #open('test2.txt','r') 8 9 #x模式 10 #open('test3.txt','x') 11 12 #a模式 13 #open('test4.txt','a') 14 15 #b模式 16 #fp = open('test5.txt','wb') 17 #fp.write('一二三四五,上山打老虎'.encode())#必须是bytes类型 18 #fp.close() 19 20 #+模式 21 22 fp = open('test6.txt','w+',encoding='utf-8') 23 #写入操作 24 fp.write('兄弟连激情四射!') 25 #将文件指针移动到开头 26 fp.seek(0) 27 #读取操作 28 data = fp.read() 29 print(data) 30 #输出结果:兄弟连激情四射! 31 fp.close()
close():关闭文件对象,方便回收资源
文件打开就要关闭!
read() 读取文件内容
格式:文件io对象.read()
读取所有内容
格式:文件io对象.read(读取的字符个数)
读取指定长度的字符
1 #read 2 fp = open('read.txt','r',encoding= 'utf-8') 3 4 #读取操作1 5 #data = fp.read() 6 #print(data) 7 8 #读取操作2 9 data = fp.read(5) 10 print(data) 11 #输出结果:李白乘舟将 12 fp.close()
readline() 一次读取一行的内容
格式:文件io对象.readline()
读取一行内容
格式:文件io对象.readline(读取的字符个数)
读取内容:如果个数>当前行的字符数,只读取当前行,如果读取的字符个数<=当前行字符串,按照指定的长度读取
1 fp = open('readline.txt','r',encoding='utf-8') 2 3 #读取一行内容 4 data = fp.readline() 5 print(data) 6 #输出结果:李白乘舟将欲行, 7 8 #读取一行内容 9 data = fp.readline() 10 print(data) 11 #输出结果:忽闻岸上踏歌声, 12 13 #读取一行内容 14 data = fp.readline() 15 print(data) 16 #输出结果:桃花潭水深千尺, 17 18 #读取一行内容 19 data = fp.readline() 20 print(data) 21 #输出结果:不及汪伦送我情 22 23 #读取一行内容 24 data = fp.readline(30) 25 print(data) 26 #输出结果: 27 28 fp.close()
readlines() 一次读去多行内容
格式:文件io对象.readlines()
将所有数据按行读取到列表当中去
格式:文件io对象.readlines(字符个数)
将所有数据按行读取到列表当中去
注意:如果字符个数不满1行按照一行计算
1 fp = open('readlines.txt','r',encoding='utf-8') 2 3 #读取内容1 4 #data = fp.readlines() 5 #print(data) 6 7 8 #读取内容2 9 data = fp.readlines(11) 10 print(data) 11 12 fp.close()
write() 向文件中写入内容
格式:文件io对象.write(内容)
1 #write() 2 fp = open('write2.txt','w',encoding='utf-8') 3 #写入方法 4 #fp.write('唧唧复唧唧,木兰当户织') 5 fp.close()
writelines() 将容器数据写入到文件当中
格式:文件io对象.writelines(容器类数据)
1 #有一个字符的列表 2 shi = ['鹅鹅鹅\n','曲项向天歌\n','白毛浮绿水\n','红掌拨清波'] 3 4 fp = open('writelines.txt','w',encoding='utf-8') 5 #写入操作 6 fp.writelines(shi) 7 fp.close()
truncate() 截取文件内容
格式:文件io对象.truncate(字节个数)
#与文件指针相关的函数
1 #truncate() 截取文件内容 2 fp = open('truncate.txt','r+') 3 #截取操作 4 fp.truncate(10)#这里的长度是字节个数而不是字符个数!! 5 fp.close()
tell() 获取当前文件指针的位置,文件指针按照字节计算而不是字符!
格式:文件io对象.tell()
返回值:文件指针位置的整数
1 #tell() 获取当前文件指针的位置,文件指针按照字节计算而不是字符! 2 fp = open('tell.txt','r',encoding='utf-8') 3 #获取文件指针的位置 4 position = fp.tell() 5 print(position) 6 7 #读取文件内容 8 data = fp.read(3) 9 print(data) 10 11 #获取文件指针的位置 12 position = fp.tell() 13 print(position) 14 15 fp.close()
seek() 设置指针的位置
格式:文件io对象.seek(指针长度,参考位置) #这是官方定义的功能
指针长度: 只是一个整数
参考位置: 0 表示从头开始计算长度 【只有这个可以使用,可以直接省略】
1 表示从当前指针的位置开始计算长度
2 表示从末尾向前计算长度
1 #seek() 设置指针的位置 2 fp = open('seek.txt','r',encoding='utf-8') 3 4 #获取当前指针的位置 5 print(fp.tell()) 6 7 #调整文件指针的位置 8 fp.seek(12,0) 9 10 #获取当前指针的位置 11 print(fp.tell()) 12 13 #读取内容 14 print(fp.read(3)) 15 16 #获取当前指针的位置 17 print(fp.tell()) 18 19 fp.close()