当前位置 主页 > 网站技术 > 代码类 >

    使用pickle存储数据dump 和 load实例讲解

    栏目:代码类 时间:2019-12-31 06:11

    使用pickle模块来dump你的数据:对上篇博客里的sketch.txt文件:

    import os
    import sys
    import pickle
     
    man=[ ]
    other=[ ]
    try:
        data=open('sketch.txt')
        for each_line in data:
            try:
                (role,line_spoken)=each_line.split(':',1)
                line_spoken=line_spoken.strip()
                if role == 'Man':
                    man.append(line_spoken)
                elif role == 'Other Man':
                    other.append(line_spoken)
            except ValueError:
                pass
        data.close()
    except IOError:
        nester.print_lol('The data file is missing!')
     
    try:
        with open('man_data.txt','wb') as man_file:
          pickle.dump(man,man_file)
        with open('other_data.txt','wb') as other_file:
          pickle.dump(other,other_file)
        
     
     
    except IOError as err:
      print('File error: ' + str(err))
    except pickle.PickleError as perr:
      print('Pickling error: ' + str(perr))
     
    

    打开man_data.txt,看结果:

    ?]q (X'  Is this the right room for an argument?qX  No you haven't!qX  When?qX  No you didn't!qX  You didn't!qX  You did not!qX=  Ah! (taking out his wallet and paying) Just the five minutes.qX  You most certainly did not!qX  Oh no you didn't!q X  Oh no you didn't!q
    X  Oh look, this isn't an argument!qX  No it isn't!qX  It's just contradiction!q
    X  It IS!qX  You just contradicted me!qX  You DID!qX  You did just then!qX"  (exasperated) Oh, this is futile!!qX
      Yes it is!qe.

    把已存储在man_data.txt上的二进制文件,恢复成可以读的文件,存放在new_man.txt中:

    import nester
    import os
    import sys
    import pickle
     
    man=[ ]
    other=[ ]
    new_man=[ ]
     
    try:
        data=open('sketch.txt')
        for each_line in data:
            try:
                (role,line_spoken)=each_line.split(':',1)
                line_spoken=line_spoken.strip()
                if role == 'Man':
                    man.append(line_spoken)
                elif role == 'Other Man':
                    other.append(line_spoken)
            except ValueError:
                pass
        data.close()
    except IOError:
        print_lol('The data file is missing!')
     
    try:
    #    with open('man_data.txt','wb') as man_file:
    #      pickle.dump(man,man_file)
    #    with open('other_data.txt','wb') as other_file:
    #      pickle.dump(other,other_file)
     
      with open('man_data.txt','rb') as man_file:
        new_man=pickle.load(man_file)
     
    except IOError as err:
      print('File error: ' + str(err))
    except pickle.PickleError as perr:
      print('Pickling error: ' + str(perr))
    

    查看结果:

     RESTART: C:/Users/ThinkPad/AppData/Local/Programs/Python/Python36-32/chapter4-134-pickle.py 
    >>> import nester
    >>> nester.print_lol(new_man)
    Is this the right room for an argument?
    No you haven't!
    When?
    No you didn't!
    You didn't!
    You did not!
    Ah! (taking out his wallet and paying) Just the five minutes.
    You most certainly did not!
    Oh no you didn't!
    Oh no you didn't!
    Oh look, this isn't an argument!
    No it isn't!
    It's just contradiction!
    It IS!
    You just contradicted me!
    You DID!
    You did just then!
    (exasperated) Oh, this is futile!!
    Yes it is!
    >>> import os
    >>> os.getcwd()
    'C:\\Users\\ThinkPad\\AppData\\Local\\Programs\\Python\\Python36-32'
    >>>