如何将多个.txt文件打包成一个pickle

1 投票
2 回答
7029 浏览
提问于 2025-04-16 22:34

我需要解决一些关于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)

这样我就可以在之后“重新打包”它们,获取数据。

使用cPickle这样做合适吗?如果合适,我该怎么正确操作呢?

如果不合适,那有什么其他好的方法呢?

提前感谢你们!

Rafal

2 个回答

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

这是正确的方法,它会把文件的内容进行“腌制”(也就是保存):

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],那么你并不是在保存文件的内容,而是在保存文件的句柄(也就是文件的引用)。

撰写回答