2009-11-30 3 views
1

Je cherche à traduire la commande unixnom de chat. *> Datei

$ cat filename.* > Datei 

dans un programme Python. Quelqu'un peut-il aider?

+4

Veuillez poster le code que vous avez écrit pour loin. Ce n'est pas "Do My Homework For Me.COM". –

Répondre

2

Quelque chose comme cela devrait vous aider à démarrer:

import glob 

outfile = file("Datei", "wb") 
for f in glob.glob("filename.*"): 
    infile = open(f, "rb") 
    outfile.write(infile.read()) 
    infile.close() 
outfile.close() 

MISE À JOUR: Bien sûr, les fichiers d'entrée doivent être ouverts, aussi.

MISE À JOUR: Explicite utilise le mode binaire.

+0

Vous avez oublié de 'ouvrir()' vos fichiers d'entrée. 'glob.glob' renvoie une liste de noms de fichiers, pas d'objets de fichiers. –

+0

pour les fichiers binaires est préférable de faire out.write (open (f) .read()) – Ferran

+0

Pour la portabilité, vous devez également ouvrir vos fichiers avec en mode binaire ('rb', 'wb'). Des choses méchantes vont arriver sur Windows autrement. –

1
import glob 

output = open('Datei', 'wb') 
chunk_size = 8192 
for filename in glob.glob('filename.*'): 
    input = open(filename, 'rb') 
    buffer = input.read(chunk_size) 
    while buffer: # False if buffer == "" 
     output.write(buffer) 
     buffer = input.read(chunk_size) 
    input.close() 
output.close() 
+0

Cela peut être plus efficace que readlines, car il n'a pas à rechercher les caractères de nouvelle ligne. –

0

alternativement

import os 
f=open("outfile.txt","a") 
for file in os.listdir("."): 
    if file.startswith("filename."): 
     for line in open(file): 
       f.write(line) 
f.close() 
0

Merci pour votre aide. Mon script maintenant:

LOGFILEDIR="/olatfile/logs" 
VORMONAT=time.strftime("%Y-%m", time.localtime(time.time()-3600*24*30)) 
LOGDATEIEN=LOGFILEDIR+"/olat.log."+VORMONAT +"-*" 
print LOGDATEIEN 
OUTPUT=LOGFILEDIR+"/olat.log."+VORMONAT 
LOGFILE=OUTPUT 
output = open(OUTPUT, 'wb') 
chunk_size = 8096 
for filename in glob.glob(LOGDATEIEN): 
    input = open(filename, 'rb') 
    buffer = input.read(chunk_size) 
    while len(buffer) > 0: 
     output.write(buffer) 
     buffer = input.read(chunk_size) 
    input.close() 
output.close() 

Une application crée tous les jours un fichier journal comme « olat.log.07-12-2009 » Mon idée était de chat tous les journaux d'un papillon de nuit dans un fichier journal et analyser celui-ci.