2011-07-30 3 views
1

je dois surmonter des contraintes de cPickle, à savoir i besoin d'ouvrir plusieurs fichiers et de les mariner dans un fichier, comme ceci: afin que plus tardComment décaper plusieurs fichiers txt dans un cornichon

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) 

I peut "repickle" eux et obtenir les données.

est une bonne façon de le faire cPickle donc? Si oui comment puis-je le faire correctement

Dans le cas contraire, ce serait approprié?

Merci à l'avance

Rafal

Répondre

2

Ceci est la bonne façon, il Pickles le contenu du fichier:

file1=open('file1.txt','r') 
file2=open('file2.txt','r') 
obj=[file1.read(), file2.read()] 
cPickle.dump(obj,open('result.i2','w'),2) 

Si vous définissez obj=[file1,file2] vous n'êtes pas décapage le contenu du fichier, vous décapage le fichier gère.

+0

Oui, en effet, il fonctionne très bien. Merci beaucoup. Je pense que je suis juste confus avec quelques erreurs mineures. PS. Voir le code dans la réponse ci-dessous. –

2

code approprié pour enregistrer plusieurs fichiers txt en un seul, puis les déballer en fichiers texte nouveau, basé sur la réponse de Dietrich Epp:

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() 
Questions connexes