How to pickle several .txt files into one pickle

倾然丶 夕夏残阳落幕 提交于 2019-12-11 12:09:42

问题


I need to overcome some cPickle constrains, namely i need to open several files and pickle them to one file, like this:

import cPickle

file1=open('file1.txt','r')
file2=open('file2.txt','r')
obj=[file1,file2] or obj=[file1.read(), file2.read()]
cPickle.dump(obj,open('result.i2','w'),2)

so that later I can "repickle" them and get the data.

Is a cPickle good way to do so?If yes how can I do it properly

If not, what would be suitable?

Thanks in advance

Rafal


回答1:


This is the correct way, it pickles the file contents:

file1=open('file1.txt','r')
file2=open('file2.txt','r')
obj=[file1.read(), file2.read()]
cPickle.dump(obj,open('result.i2','w'),2)

If you set obj=[file1,file2] you are not pickling the file contents, you are pickling the file handles.




回答2:


Proper code to save multiple .txt files into one, and then unpack them into text files again, based on Dietrich Epp 's answer:

import cPickle,os


def save(dir):
    result_file=open(dir+'/result.i2','wb')        
    list=os.listdir(dir) 
    obj=[list]   
    for file in list:
        print file
        f=open(dir+"/"+file,'rb')        
        obj.append(f.read())

    cPickle.dump(obj,result_file,2)

def load(path):
    f=open(path+"/"+'result.i2','rb')


    obj=cPickle.load(f)    
    for i in range(1,len(obj)):
        file=open(path+"/"+obj[0][i-1],'wb')
        file.writelines(obj[i])
        file.close()


来源:https://stackoverflow.com/questions/6884903/how-to-pickle-several-txt-files-into-one-pickle

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!