我需要克服一些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)
以便稍后我可以“重新”他们并获取数据。
这是一个很好的方法吗?如果是的话,我怎么能正确地做到这一点
如果没有,那什么是合适的?
提前致谢
拉法尔
答案 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()