Python 小甲鱼教程 课后练习31 pickle模块

Pickle模块是用来处理2进制内容的


然后练习要求是:把record.txt内的内容,用pickle模块,将已分割好的内容分别放入6个文件内

要求如下





代码如下:

import pickle

def save_file(boy,girl,count):
    file_name_boy='boy_'+str(count)+'.txt'
    file_name_girl='girl_'+str(count)+'.txt'


    boy_file=open(file_name_boy,'wb')
    girl_file=open(file_name_girl,'wb')


    pickle.dump(boy,boy_file)
    pickle.dump(girl,girl_file)


    boy_file.close()
    girl_file.close()
    
def split_file(file_name):           #先写的是分割文件内容这部分的参数,其实不用函数也可以做,只不过用函数封装起来比较好看。
    boy=[]                                        #建立boy和girl两个空列表,把分割出来的内容放进去
    girl=[]
    count=1                                    #这个count是用来命名文件夹时候用的,关系到文件夹后面的下划线数字
    f=open(file_name)
    for each_line in f:                   #迭代文件内容的每一行
        if each_line[:6] != '======':     #对于每一行内容进行判断,如果开头6位不是等号的话,因为源文件每段对话的分割标志是等号
            (role,spoken)=each_line.split(':',1)   #则对每一行进行分割,以冒号为界,这里的1为什么要标红!因为犯了错!有句子里面是有不止1个冒号的,这样用2个变量去赋                                                                                    #值,会发生报错!!切记看清原文,不过加了1以后,就可以避免把后面的冒号分割的情况发生
            if role == '小客服':
                girl.append(spoken)
            if role == '小甲鱼':
                boy.append(spoken)

        else:
            save_file(boy,girl,count)     #调用上面的其他函数,来保存文件
            boy=[]                                     #每次碰到分割符号以后,先保存文件,保存完以后,把boy和girl两个列表清空,以放在后面用
            girl=[]
            count+=1                              #然后计数加1,保证后面保存文件的时候可以数字变化
    save_file(boy,girl,count)            #这里为什么在循环外再要保存一次呢???因为:他保存文件的触发条件是遇到等号=====,但是最后一段的结尾没有等号,所以要手动触                                                              #发一次保存
    f.close()

split_file('record.txt')            



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值