问题
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