2011-07-30 32 views
1

我需要克服一些cPickle的約束,即 我需要打開多個文件,並將它們鹹菜到一個文件中,就像這樣:如何鹹菜幾個.txt文件到一個鹹菜

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的好方法嗎?如果是的話我該怎麼做正確

如果沒有,什麼是合適的?

在此先感謝

拉法爾

回答

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]你是不是酸洗文件內容,你是酸洗該文件句柄。

+0

確實是這樣,它工作正常。非常感謝。我想我只是對一些小錯誤感到困惑。 PS。請參閱下面答案中的代碼。 –

2

正確的代碼到多個.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() 
相關問題