• 零基础入门学习Python(31)--永久存储:腌制一缸美味的泡菜


    知识点

    • pickle( 泡菜 ) 模块介绍:
      pickle模块作用是持久化的储存数据。
    在Python程序运行中得到了一些字符串、列表、字典等数据,想要长久的保存下来,方便以后使用,
    
    而不是简单的放入内存中关机断电就丢失数据。python模块大全中的pickle模块就派上用场了,
    
    它可以将对象转换为一种可以传输或存储的格式。
    • pickle模块的dump()方法
    #dump一个字典至本地
    
    city = {
        '北京': '101010100',
        '海淀': '101010200',
        '朝阳': '101010300',
        '顺义': '101010400',
        '怀柔': '101010500'}
    
    import pickle
    
    pickle_file = open('city_data.pki1','wb')  #注意一定是二进制写模式打开文件
    
    pickle.dump(city,pickle_file)
    
    pickle_file.close()
    
    • pickle模块的load()方法
    import pickle
    
    pickle_file = open('D:\untitledPython_learn\city_data1.pki','rb')
    
    city = pickle.load(pickle_file)
    
    for i in city:
        print(i)
    
    #############输出结果################
    D:untitledvenvScriptspython.exe D:/untitled/Python_learn/test1.py
    北京
    海淀
    朝阳
    顺义
    怀柔

    课后习题

    测试题:

    • pickle的实质是什么?
    pickle的实质就是利用一些算法将你的数据对象“腌制”成二进制文件,存储在磁盘上,
    当然也可以放在数据库或者通过网络传输到另一台计算机上。
    • 使用pickle的什么方法存储数据?
    pickle.dump(data,file) 
    #第一个参数是待存储的数据对象,第二个参数是目标存储的文件对象,注意要先使用'wb'模式open文件哦
    • 使用pickle的什么方法读取数据?
    pickle.load(file)
    #参数是目标存储的文件对象,注意要先使用'rb'模式open文件

    动动手
    编写一个程序,这次要求使用pickle将文件record.txt里的对话按照以下要求腌制成不同文件(没错,是第29讲的内容小改,考考你自己能写出来吗?)

    • 小甲鱼的对话单独保存为boy_*.txt的文件(去掉小甲鱼:
    • 小客服的对话单独保存为girl_*.txt的文件(去掉小客服:
    • 文件中总共有三段对话,分别保存为boy_1.txt,girl_1.txt,boy_2.txt,girl_2.txt,boy_3.txt,girl_3.txt共6个文件(提示:文件中不同的对话已经使用======分割)
    # record.txt文件内容
    '''
    小客服:小甲鱼,今天有客户问你有没有女朋友?
    小甲鱼:咦??
    小客服:我跟她说你有女朋友了!
    小甲鱼:。。。。。。
    小客服:她让你分手后考虑下她!然后我说:"您要买个优盘,我就帮您留意下~"
    小甲鱼:然后呢?
    小客服:她买了两个,说发一个货就好~
    小甲鱼:呃。。。。。。你真牛!
    小客服:那是,谁让我是鱼C最可爱小客服嘛~
    小甲鱼:下次有人想调戏你我不阻止~
    小客服:滚!!!
    ================================================================================
    小客服:小甲鱼,有个好评很好笑哈。
    小甲鱼:哦?
    小客服:"有了小甲鱼,以后妈妈再也不用担心我的学习了~"
    小甲鱼:哈哈哈,我看到丫,我还发微博了呢~
    小客服:嗯嗯,我看了你的微博丫~
    小甲鱼:哟西~
    小客服:那个有条回复“左手拿著小甲魚,右手拿著打火機,哪裡不會點哪裡,so easy ^_^”
    小甲鱼:T_T
    ================================================================================
    小客服:小甲鱼,今天一个会员想找你
    小甲鱼:哦?什么事?
    小客服:他说你一个学生月薪已经超过12k了!!
    小甲鱼:哪里的?
    小客服:上海的
    小甲鱼:那正常,哪家公司?
    小客服:他没说呀。
    小甲鱼:哦
    小客服:老大,为什么我工资那么低啊??是时候涨涨工资了!!
    小甲鱼:啊,你说什么?我在外边呢,这里好吵吖。。。。。。
    小客服:滚!!!
    '''
    
    
    import pickle
    
    def write_file(a, b, c):
        file_boy_name = 'boy_' + str(c) + '.txt'
        file_girl_name = 'girl_' + str(c) + '.txt'
        boy_file = open(file_boy_name, 'wb')
        girl_file = open(file_girl_name, 'wb')
        pickle.dump(a,boy_file)
        pickle.dump(b, girl_file)
        boy_file.close()
        girl_file.close()
    
    def split_file(file_name):
        file1 = open(file_name)
        girl = []
        boy = []
        count = 1
        for each_line in file1:
            if each_line[:6] != '======':
                (role,spoken_line) = each_line.split(':',1)
                if role == '小甲鱼':
                    boy.append(spoken_line)
                if role == '小客服':
                    girl.append(spoken_line)
            else:
                write_file(boy,girl,count)
                boy = []
                girl = []
                count += 1
        write_file(boy,girl,count)
        file1.close()
    
    file_name = input('请输入文件名:')
    split_file(file_name)
  • 相关阅读:
    【洛谷P2839】middle
    【洛谷P2495】消耗战
    【CF1438D】Powerful Ksenia
    【CF878E】Numbers on the blackboard
    【洛谷U138580】简单的打击
    【洛谷P4774】屠龙勇士
    【GMOJ5363】生命之树
    【YbtOJ#20075】区间异或
    【YbtOJ#20077】计划带师
    hdu 2688
  • 原文地址:https://www.cnblogs.com/wanbin/p/9514677.html
Copyright © 2020-2023  润新知