如何将几个.txt文件腌制成一个泡菜

时间:2011-07-30 17:46:36

标签: python pickle

我需要克服一些cPickle约束, 即我需要打开几个文件并将它们腌制到一个文件中,如下所示:

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)

以便稍后我可以“重新”他们并获取数据。

这是一个很好的方法吗?如果是的话,我怎么能正确地做到这一点

如果没有,那什么是合适的?

提前致谢

拉​​法尔

2 个答案:

答案 0 :(得分:2)

这是正确的方法,它会腌制文件内容:

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

如果你设置obj=[file1,file2],你没有腌制文件内容,那么你正在挑选文件句柄。

答案 1 :(得分:2)

根据Dietrich Epp的回答,将多个.txt文件保存到一个文件中,然后再将它们解压缩到文本文件中的正确代码:

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()