如何将多个.txt文件打包成一个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)
这样我就可以在之后“重新打包”它们,获取数据。
使用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]
,那么你并不是在保存文件的内容,而是在保存文件的句柄(也就是文件的引用)。