Supprimer les premières lignes d'un fichier texte

Fermé
dino.adnane Messages postés 11 Date d'inscription lundi 7 mai 2018 Statut Membre Dernière intervention 23 mai 2018 - 9 mai 2018 à 11:59
dino.adnane Messages postés 11 Date d'inscription lundi 7 mai 2018 Statut Membre Dernière intervention 23 mai 2018 - 14 mai 2018 à 12:19
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


A voir également:

4 réponses

little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024 1 757
10 mai 2018 à 12:23
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
dino.adnane Messages postés 11 Date d'inscription lundi 7 mai 2018 Statut Membre Dernière intervention 23 mai 2018
10 mai 2018 à 14:15
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
0
little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024 1 757
10 mai 2018 à 17:23
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
dino.adnane Messages postés 11 Date d'inscription lundi 7 mai 2018 Statut Membre Dernière intervention 23 mai 2018
14 mai 2018 à 12:19
Merci beaucoup
C'est trop gentil
0
little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024 1 757
10 mai 2018 à 21:35
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
little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024 1 757
9 mai 2018 à 21:28
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 ?


++
0
dino.adnane Messages postés 11 Date d'inscription lundi 7 mai 2018 Statut Membre Dernière intervention 23 mai 2018
9 mai 2018 à 22:52
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]
0
little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024 1 757
9 mai 2018 à 23:14
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)
0
dino.adnane Messages postés 11 Date d'inscription lundi 7 mai 2018 Statut Membre Dernière intervention 23 mai 2018 > little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024
9 mai 2018 à 23:51
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
0
little boy62 Messages postés 3584 Date d'inscription lundi 11 novembre 2013 Statut Membre Dernière intervention 15 avril 2024 1 757
9 mai 2018 à 23:15
lstrip permet de supprimer les espaces vides de gauche et de droite.
0