En entrée un fichier texte et d'écrire plusieurs fichiers de sortie en Python
Salut les gens je suis saisie d'un filename.txt et la production de plusieurs fichiers de sortie filename1.txt, filename2.txt et filename3.txt. Pour être plus précis, voici les données d'entrée dans filename.txt:
Time(ms) Channel 1 Channel 2 Channel 3
0.0 4.5 3.6 125
1.0 3.0 3.4 98
2.0 100 3.0 59
3.0 23 45.9 2.1
4.0 34 123 35
5.0 2.1 222 98
filename1.txt devrait produire des données de colonnes de Temps et le Canal 1
filename2.txt devrait produire des données de colonnes de Temps et le Canal 2
filename3.txt devrait produire des données de colonnes de Temps et Canal 3
Code Source:
with open('filename.txt', 'r') as input:
for i in range(1,4):
with open('filename%i.txt' %i, 'w') as output:
for line in input:
columns = line.strip().split()
for j in range(1,4):
output.write('{:10}{:10}\n'.format(columns[0], columns[j+1]))
Compilé je reçois des fichiers texte fichier1, fichier2 et nom_fichier3 mais uniquement les données dans fichier1.
Ce qui est arrivé à fichier2 et nom_fichier3 données?
Vous devriez revenir en arrière et accepter des réponses à certaines ou à toutes vos questions. Voir cette réponse sur meta pour plus d'informations: meta.stackexchange.com/a/5235/166957
OriginalL'auteur guiNachos | 2012-03-03
Vous devez vous connecter pour publier un commentaire.
for line in input
épuise toutes les lignes dans lesinput
fichier. Vous devez recharger le fichier et recommencer au début si vous voulez aller à travers eux une fois de plus... ou de les copier sur une autre liste de la première.OriginalL'auteur Steven T. Snyder
Vous ne lisez pas l'entrée une fois, mais essaie de faire une itération sur l'ensemble de ses lignes trois fois. Vous pouvez soit ouvrir toutes les 3 sorties et à écrire à tous en même temps, ou ouvrez l'entrée 3 fois (une fois pour chaque fichier de sortie). La meilleure approche dépendra de vos besoins spécifiques (la taille du fichier, le nombre de fichiers de sortie, etc).
Ouverture 3 fois produit nettoyant code, mais il pourrait être moins efficace:
Généralisée de solution pour l'ouverture de tous les fichiers de sortie à la fois serait mieux sans la
with
clause:(vous aurez à gérer les exceptions manuellement, dans ce cas)
nope. Mon erreur, lors de l'adaptation de votre code, j'ai quitté le "j". De réponses mis à jour
OriginalL'auteur mgibsonbr
Juste un conseil. Après la 2ème
with
instruction, ajoutezpourrait également faire l'affaire.
OriginalL'auteur dli