2012-11-23 4 views
0

j'ai essayé de fusionner plusieurs fichiers TXT dans un dossier avec ce code, mais il ne fonctionne pas:Python fusionner plusieurs fichiers txt

import os,shutil 
path = "C:/Users/user/Documents/MergeFolder" 
f=open(path + "/fileappend.txt","a") 
for r,d,fi in os.walk(path): 
    for files in fi: 
     if files.endswith(".txt"):       
       g=open(os.path.join(r,files)) 
       shutil.copyfileobj(g,f) 
       g.close() 
f.close() 

Quelqu'un a une idée?

+1

son ne fonctionne pas ... pouvez-vous spécifier les détails, est-ce que votre destination est écrasée – avasal

+0

pas rien n'a été écrasé ou généré pour moi aussi –

+1

Je suis confus voir à la fois '/ tmp' et 'C: \ users' dans le même code. Quel est le système dans lequel vous êtes? Également, écrivez 'r 'C: \ Users ..." 'à la place, pour empêcher l'échappement. – bereal

Répondre

1

EDIT: vous créez fileappend.txt à l'intérieur de path, tout en écrivant dessus. Selon le moment où les écritures sont vidées sur le disque, vous essayez peut-être de lire le fichier auquel vous ajoutez. Cela causerait, bien, beaucoup d'étrangeté. Pensez à ne pas placer fileappend.txt à l'intérieur de path, ou bien simplement le déplacer là quand vous avez terminé.

Vous pouvez écrire votre code plus nettement que:

with open(os.path.join(path, "fileappend.tmp"), "a") as dest: 
    for _, _, filenames in os.walk(path): 
     for filename in fnmatch.filter(filenames, "*.txt"): 
      with open(filename) as src: 
       shutil.copyfileobj(src, dest) 
os.rename(os.path.join(path, "fileappend.tmp"), "fileappend.txt") 
+0

Bonjour, j'ai essayé votre code mais j'ai obtenu ceci: NameError: le nom global 'fnmatch' n'est pas défini –

+0

Vous devez 'importer fnmatch'. – katrielalex

+0

Maintenant j'ai ceci: IOError: [Errno 2] Aucun fichier ou répertoire: 'fileappend.txt' mais le fichier existe sans contenu. –

0

vous pouvez utiliser le chat (commande shell)

cat 1.txt>>2.txt 

en python, vous pouvez utiliser os.system() pour utiliser la commande shell

Questions connexes