封装前的代码:读取文件内容并按要求分割保存
f =open("test.txt") #打开文件获取文件对象
boy = []
girl = [] #创建两个空列表,用于放数据
count = 1
for each_line in f: #遍历文件每一行
if each_line[:6] != "======": #判断是否是文件内容另一部分
(role,line_spoken) = each_line.split(":",1) #split(step=none,maxsplit=n)不带参数默认以空格为分割符切片字符串,maxsplit有参数则分割n个子字符串,返回切片后的子字符串拼接的列表
if role =="小yueyue":
boy.append(line_spoken) #append()列表追加函数,把分割后的列表分别追加进boy列表和girl列表
if role == "小haha":
girl.append(line_spoken)
else:
file_boy_name = "boy_" + str(count) + ".txt" #定义文件名
file_girl_name = "girl_" + str(count) + ".txt"
boy_file =("file_boy_name",'w') #打开文件,文件不存在的创建新文件,存在则覆盖
girl_file = ('file_girl_name','w')
boy_file = writelines(boy) #writelines()针对列表的操作,接受一个字符串列表作为参数,将他们写入文件,并且行结束符不会被自动加入
girl_file =writelines(girl)
#当写入信息到文件对象时,.close()才会真正写进磁盘,才会显示变化
boy_file.close()
girl_file.close()
boy =[]
girl = []
count +=1
file_boy_name ="boy_" + str(count) +".txt"
file_girl_name ="girl_"+ str(count) + ".txt"
boy_file =open(file_boy_name,"w")
girl_file =open(file_girl_name,"w")
boy_file.writelines(boy)
girl_file.writelines(girl)
boy_file.close()
girl_file.close()
封装后的代码:
def save_file(boy,girl,count):#封装写入文件的函数
file_boy_name ="boy_" + str(count) +".txt"
file_girl_name ="girl_"+ str(count) + ".txt"
boy_file =open(file_boy_name,"w")
girl_file =open(file_girl_name,"w")
boy_file.writelines(boy)
girl_file.writelines(girl)
boy_file.close()
girl_file.close()
def split_file(file_name):#封装读取文件分割文件的函数
f =open("test.txt")
boy = []
girl = []
count = 1
for each_line in f:
if each_line[:6] != "======":
(role,line_spoken) = each_line.split(":",1)
if role =="小yueyue":
boy.append(line_spoken)
if role == "小haha":
girl.append(line_spoken)
else:
save_file(boy,girl,count) #调用第一个封装函数
boy =[]
girl = []
count +=1
save_file(boy,girl,count) #调用第一个封装函数
f.close()
split_file('test.txt') #调用第二个函数