1.文件打开形式2.文件常见 *** 作open函数打开文件注意:open函数打开中文文件close函数关闭文件read函数读取文件内容tell函数,返回文件指针当前指向seek(offset,from)函数,更改文件指针指向writelines/write函数向文件内写入数据3.文件任务(文件拆分)
1.文件打开形式r只读
w只写
r+,可读可写。当文件存在时会报错
w+,可读可写。当文件不存在时会新建
a ,追加文件,不可读
a+,追加文件,可读可写
rb 以二进制读模式打开。只可读
rb+ 以二进制写读写模式打开。可读可写,当文件不存在时报错
wb 以位进制写模式打开。只可写
wb+ 以二进制读写模式打开。可读可写。当文件不存在时新建
ab 以二进制追加模式打开。追加文件,不可读
ab+ 以二进制读写模式打开。追加文件。可读可写
注意,打开文件时要带路径
#-*-coding:GBK -*- # -*- coding: UTF-8 -*- #open函数打开文件带路径,默认当前路径 f=open("./测试.txt",'w+')#以写的形式创建文件,文件不存在时新建
open函数返回一个文件描述符,默认打开方式是读取。
注意:如果要读取中文文件,需要在open函数后添加encoding='utf-8'
f=open("./测试.txt",‘r’,encoding=‘utf-8’)
close函数关闭文件#-*-coding:GBK -*- # -*- coding: UTF-8 -*- #open函数打开文件带路径 f=open("./测试.txt",'w+') #关闭文件 f.close()read函数读取文件内容
.read(size=-1),默认size=-1时读取文件的所有内容,并作为字符串返回。
如果size不为-1,则读取size个字符数据
#-*-coding:GBK -*- # -*- coding: UTF-8 -*- #open函数打开文件带路径 f=open("./测试.txt",'r',encoding='utf-8') str=f.read() print(str) #关闭文件 f.close()tell函数,返回文件指针当前指向
#-*-coding:GBK -*- # -*- coding: UTF-8 -*- #open函数打开文件带路径 f=open("./测试.txt",'r',encoding='utf-8') str=f.read(8)#读取8个字 print(str) print(f.tell()) #关闭文件 f.close()seek(offset,from)函数,更改文件指针指向
from=0代表从起始位置开始计算
from=1代表从当前文件指针位置开始计算。
from=2代表从文件末尾
偏移offset个字节
#-*-coding:GBK -*- # -*- coding: UTF-8 -*- #open函数打开文件带路径 f=open("./测试.txt",'r',encoding='utf-8') str1=f.read(8) print(str1) print(f.tell()) print(f.seek(5,0)) #关闭文件 f.close()writelines/write函数向文件内写入数据
writelines(seq)向文件中写入字符串序列
writ(str)向文件中写入字符串str
#-*-coding:GBK -*- # -*- coding: UTF-8 -*- #open函数打开文件带路径 f=open("./测试.txt",'w+',encoding='utf-8') f.write("喜欢你软起来的样子") f.close()#刷新文件 f=open("./测试.txt",'r',encoding='utf-8') str=f.read() print(str) #关闭文件 f.close()3.文件任务(文件拆分)
eg:
A:这个问题谁来解决? B:我来! =================== A:新年快乐 B:谢谢,同乐 =================== A:C++是世界上最好的语言 B:胡说,明明是PHP
将上述文件拆分为3个文件,A的放到一个3个文件中,B的放到3个文件中
def Save(A,B,cout): #文件保存 Name_A="A"+str(cout)+".txt" Name_B="B"+str(cout)+".txt" Af=open(Name_A,'w') Bf=open(Name_B,'w') Af.writelines(A) Bf.writelines(B) #写入后关闭 Af.close() Bf.close() f=open("./read.txt",'r',encoding='UTF-8') A=[] B=[] cout=1#计数器 for each_line in f: if each_line[:6]!="======":#判断前6个字是不是=== #字符串分割 (role,line_spoken)=each_line.split(":",2)#字符串分割 if role=="A": A.append(line_spoken) elif role=="B": B.append(line_spoken) else: Save(A,B,cout) #清空A B列表 A=[] B=[] cout+=1 #将剩下的内容保存起来 Save(A,B,cout) f.close()
运行结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)