Supprimer les premières lignes d'un fichier texte

[Fermé]
Signaler
Messages postés
11
Date d'inscription
lundi 7 mai 2018
Statut
Membre
Dernière intervention
23 mai 2018
-
Messages postés
11
Date d'inscription
lundi 7 mai 2018
Statut
Membre
Dernière intervention
23 mai 2018
-
Bonjour,

Excusez-moi je suis débutant en python et je suis vraiment bloqué a ce niveau là

le but du code est de supprimer les premières lignes du fichier texte et de supprimer l'espace qui est avant chaque mesure.

Merci d'avance


4 réponses

Messages postés
3312
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
19 octobre 2021
1 665
Salut.

Le plus simple, c'est d'héberger le fichier data.txt pour que je puisse faire un code fonctionnel ^^

Une toute petite question : le fichier data.txt est bien dans le même dossier que le script python ?
Dans le shell, les lignes n'apparaissent pas ?

il ne génère même pas le nouveau_fichier. 

Normal, vu que je n'ai pas codé cette partie. ^^

++
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
11
Date d'inscription
lundi 7 mai 2018
Statut
Membre
Dernière intervention
23 mai 2018

oui le fichier data.txt est bien dans le même dossier que le script python
voila un lien pour le télécharger
https://uncloud.univ-nantes.fr/index.php/login
Messages postés
3312
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
19 octobre 2021
1 665
Lu'

Merci pour le fichier, cela m'a permis de savoir pourquoi ça ne marchait pas....


X_Value Voltage Comment ==== c'est faux !


En copiant directement cette ligne, et en la déclarant en tant que variable, on s'aperçoit qu'il y a une tabulation entre X_Value et Voltage. Et non pas un espace.

Essaye ceci :
import os

lignes=""

fichier = "c:/users/tomce/desktop/data.txt"
nouveau_fichier = "c:/users/tomce/desktop/nouveau_fichier.txt"
element = 'X_Value	Voltage	Comment'

with open(fichier,"r") as FO:
    for num, line in enumerate(FO, 1):
        if element in line:
            with open(fichier,"r") as FO:
                for ligne in FO.readlines()[num:]:
                    lignes+=ligne.lstrip()
                    lignes+="\n"
                    
if lignes != "":
    print (lignes)



Là, je ne fais que mettre les lignes dans une variable.
A toi d'enregistrer le contenu de cette variable dans un fichier.


++



1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
11
Date d'inscription
lundi 7 mai 2018
Statut
Membre
Dernière intervention
23 mai 2018

Merci beaucoup
C'est trop gentil
Messages postés
3312
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
19 octobre 2021
1 665
Salut.

J'ai adapté le code, pour que tu puisses créer le nouveau fichier.
A toi de l'adapter si besoin.

import os
import webbrowser


fichier = "c:/users/tomce/desktop/data.txt"
nouveau_fichier = "c:/users/tomce/desktop/data_2.txt"
os.remove(nouveau_fichier) # suppression du fichier
element = 'X_Value	Voltage	Comment' # élément à trouver, pour démarrer la boucle for

with open(fichier,"r") as FO:
    for num, line in enumerate(FO, 1): # permet de trouver le numéro de ligne où se situe l'élément
        if element in line:
            with open(fichier,"r") as FO:
                for ligne in FO.readlines()[num:]:
                   with open(nouveau_fichier,"a+") as NFO:
                       NFO.write( ligne.lstrip())

if os.path.isfile(nouveau_fichier):
    webbrowser.open( nouveau_fichier )



++
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
3312
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
19 octobre 2021
1 665
Salut.

Tu cherches donc à supprimer les lignes en bleu pour ne garder que les lignes en rouge ?
Et également supprimer les espaces à gauche des lignes en rouge ?


++
Messages postés
11
Date d'inscription
lundi 7 mai 2018
Statut
Membre
Dernière intervention
23 mai 2018

Merci pour votre réponse
Oui je cherche à supprimer les ligne en rouge (le texte) et l'espace qui est en rouge, donc je veux garder que les valeurs numérique(Pour cela je pense que c"est simple il me faut que remplacer "\t" par "")
output_numbers = [float(valeur.replace("\t","")) for valeur in txt if valeur]


Donc en total voila mon code mais j'en ai une erreur qui l’empêche à s'exécuter
txt = data.txt.split("X_Value Voltage Comment")[-1].split("\n")
output_numbers = [float(valeur.replace("\t","")) for valeur in txt if valeur]
Messages postés
3312
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
19 octobre 2021
1 665
Essaye ça :

import os

lignes=""

fichier = "c:/users/tomce/desktop/fichier.txt"
nouveau_fichier = "c:/users/tomce/desktop/nouveau_fichier.txt"
element = 'X_Value Voltage Comment'

with open(fichier,"r") as FO:
    for num, line in enumerate(FO, 1):
        if element in line:
            with open(fichier,"r") as FO:
                for ligne in FO.readlines()[num:]:
                    lignes+=ligne.lstrip()
                    lignes+="\n"
                    
if lignes != "":
    print (lignes)
Messages postés
11
Date d'inscription
lundi 7 mai 2018
Statut
Membre
Dernière intervention
23 mai 2018
>
Messages postés
3312
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
19 octobre 2021

Merci pour votre réponse rapide
Malheureusement le code ne fait rien (mais aucune erreur) il ne génère même pas le nouveau_fichier.
import os

lignes=""

fichier = "data.txt"
nouveau_fichier = "nouveau_fichier.txt"
element = 'X_Value Voltage Comment'

with open(fichier,"r") as FO:
    for num, line in enumerate(FO, start=1):
        if element in line:
            with open(fichier,"r") as FO:
                for ligne in FO.readlines()[num:]:
                    lignes+=ligne.lstrip()
                    lignes+="\n"
                    
if lignes != "":
    print (lignes)


voila le fichier data:

LabVIEW Measurement
Writer_Version 2
Reader_Version 2
Separator Tab
Decimal_Separator ,
Multi_Headings Yes
X_Columns No
Time_Pref Absolute
Operator admin
Date 2018/05/09
Time 11:37:40,0499891300350754284
      • End_of_Header***


Channels 1
Samples 1000
Date 2018/05/09
Time 11:37:40,0499891300350754284
Y_Unit_Label Volts
X_Dimension Time
X0 0,0000000000000000E+0
Delta_X 0,000100
      • End_of_Header***

X_Value Voltage Comment
0,427676
0,427027
0,427676
0,428001
0,427676
0,427351
0,427027
0,427027
0,428326
0,427676
0,427351
0,428001
0,427351
0,427027
0,427351
0,427351
0,427676
0,426702
0,427027
0,427351
0,427676
0,427351
0,427351
Messages postés
3312
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
19 octobre 2021
1 665
lstrip permet de supprimer les espaces vides de gauche et de droite.