2012-07-23 2 views
0

car je n'ai pas beaucoup de connaissances sur Python Je voudrais demander comment puis-je enregistrer plusieurs fichiers d'entrée dans un seul fichier Excel dans différentes colonnes? J'ai un script python qui prend en entrée un fichier journal:Convertir plusieurs fichiers d'entrée en un seul fichier Excel, avec Python

file = 'output_1.log' 

et sorties dans un fichier Excel des résultats de ce fichier journal dans une seule colonne comme ceci:

data = open(file, 'r') 

Comment puis-je changer ces commandes afin de lire plusieurs fichiers texte (*.log) et imprimer les résultats dans un seul fichier Excel dans différentes colonnes pour chaque fichier d'entrée?

Merci ...

+0

1. Que consignez-vous? 2. Qu'essayez-vous d'accomplir en les condensant dans un fichier? 3. De quel type de classement avez-vous besoin pour les messages de journal provenant des différents journaux? –

+0

J'ai déjà un script python qui enregistre la vitesse et l'accélération des véhicules et délivre la vitesse et l'accélération d'un véhicule dans 2 fichiers Excel, l'un pour la vitesse et l'autre pour l'accélération. Mais ce script lit seulement un fichier spécifique avec cette commande: file = 'output_1.log'. Je veux lire les journaux de par ex. 20 véhicules et sortie la vitesse et l'accélération dans 2 fichiers Excel différents, une colonne pour chaque véhicule. – athpapa

+0

Aperçu général est: 1) Obtenez une liste des fichiers que vous voulez analyser, 2) bouclez les fichiers et lisez-les en écrivant dans Excel. Je ne suis pas sûr de ce que vous utilisez actuellement pour écrire sur Excel, mais cette étape ne devrait pas changer. – ernie

Répondre

1

Cela ferait ce que vous voulez. Il lit chaque fichier individuellement pour créer un dictionnaire mappant chaque nom de fichier à sa liste.

import glob 

data = {} 
for infile in glob.glob("*.log"): 
    with open(infile) as inf: 
     data[infile] = [l[:-1] for l in inf] 

with open("summary.xls", "w") as outf: 
    outf.write("\t".join(data.keys()) + "\n") 
    for sublst in zip(*data.values()): 
     outf.write("\t".join(sublst) + "\n") 
0

La réponse de David est une bonne option. Personnellement, je serais plus enclin à parcourir tous les fichiers journaux en utilisant quelque chose comme os.walk (si vous tirez tout depuis un seul répertoire) ou en itérant sur la liste fournie par l'utilisateur. En ce qui concerne l'écriture du fichier XLS, vous pouvez certainement le faire en tant que TSV en utilisant join comme le fait remarquer David. Cependant, en utilisant une bibliothèque comme XLWT peut vous donner plus de contrôle et l'accès à plus de fonctionnalités d'Excel. Si vous voulez le faire en tant que TSV, vous pouvez toujours regarder la bibliothèque CSV avec ses objets d'écriture pour aider à des choses comme les citations de texte.

Questions connexes