[R] Effacer la premiere et dernière ligne d'un fichier text
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
ethneldryt
- Status : Hors ligne
[R] Effacer la premiere et dernière ligne d'un fichier text
Bonjour, je cherche a effacer la première et dernière ligne d'un fichier texte, si celle si sont vide. j'essaie la fonction
_FileWriteToLine("toto.txt",1,"",1),
_FileWriteToline("toto.txt",_FileCountLine("toto.exe")+1,"",1
mais cela ne marche pas, merci de votre aide.
exemple :
-----------------------------
ligne 1-
ligne 2-texte1
ligne 3-texte2
ligne 4-
-----------------------------
donnerai :
-----------------------------
ligne 1-texte1
ligne 2-texte2
-----------------------------
_FileWriteToLine("toto.txt",1,"",1),
_FileWriteToline("toto.txt",_FileCountLine("toto.exe")+1,"",1
mais cela ne marche pas, merci de votre aide.
exemple :
-----------------------------
ligne 1-
ligne 2-texte1
ligne 3-texte2
ligne 4-
-----------------------------
donnerai :
-----------------------------
ligne 1-texte1
ligne 2-texte2
-----------------------------
Modifié en dernier par ethneldryt le ven. 01 avr. 2011 18:04, modifié 1 fois.
Re: [..] Effacer la premiere et derneire ligne d'un fichier
Bonjour,
perso pour manipuler les fichier textes, je passe par un array avec les fonctions
_FileReadToArray et _FileWriteFromArray
ce qui pourrait donner dans votre cas:
Bonne soirée
perso pour manipuler les fichier textes, je passe par un array avec les fonctions
_FileReadToArray et _FileWriteFromArray
ce qui pourrait donner dans votre cas:
Code : Tout sélectionner
#Include <File.au3>
#Include <Array.au3>
Dim $aRecords
$fichier_a_lire=@ScriptDir&"\toto.txt"
_FileReadToArray($fichier_a_lire, $aRecords) ; c:\toto.txt le nom du fichier à lire
_ArrayDelete($aRecords, 1)
_ArrayDelete($aRecords, $aRecords[0]) ;$aRecords[0]indique le nombre de lignes du tableau donc du fichier
$File = FileOpen($fichier_a_lire, 2); on ouvre le fichier en ecrasant son contenu
_FileWriteFromArray($File, $aRecords, 1)
FileClose($File)-
ethneldryt
- Status : Hors ligne
Re: [..] Effacer la premiere et derneire ligne d'un fichier
bonsoir et merci, j'y avais penser mais je ne sais pas comment faire pour enlever la ligne SI elle est vide, il se peut par exemple qu'il y ai que la première ou dernière ligne de vide et non les deux
Re: [..] Effacer la premiere et derneire ligne d'un fichier
Alors comme ceci
Dans ce cas, on commence par supprimer la derniere ligne si nécessaire car si on commence par la première $aRecords[0] risque de ne plus renvoyer la bonne ligne.
Bonne soirée
► Afficher le texte
Bonne soirée
-
ethneldryt
- Status : Hors ligne
Re: [..] Effacer la premiere et derneire ligne d'un fichier
bonsoir et merci, il y a un petit problème, si la derniere ligne est vide, elle n'est pas effacer. n'existe il pas une fonction pour supprimer carement les lignes vides d'un fichier? merci
Re: [..] Effacer la premiere et derneire ligne d'un fichier
Effectivement,
La dernière ligne si elle est vide n'est pas comptabilisée dans le tableau.
Et la fonction _FileCountLines a le même comportement.
Je ne sais pas...
Est ce que tant qu'il n'y a pas un retour chariot en fin de ligne elle ne compte pas?
à la section Remarks pour _fileCountlines
il est écrit: It does not count a final @LF as a line.
Si quelqu'un peut allumer la lanterne
merci
La dernière ligne si elle est vide n'est pas comptabilisée dans le tableau.
Et la fonction _FileCountLines a le même comportement.
Je ne sais pas...
Est ce que tant qu'il n'y a pas un retour chariot en fin de ligne elle ne compte pas?
à la section Remarks pour _fileCountlines
il est écrit: It does not count a final @LF as a line.
Si quelqu'un peut allumer la lanterne
merci
- Tlem
- Site Admin

- Messages : 11818
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Effacer la premiere et derneire ligne d'un fichier
Est-ce que dans votre fichier les mots "Ligne X" sont toujours stipulés, ou bien votre fichier peut ressembler à ceci :
Code : Tout sélectionner
Ligne 1
Ligne 2
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
ethneldryt
- Status : Hors ligne
Re: [..] Effacer la premiere et derneire ligne d'un fichier
Voila, j'ai mis 2 exemple en fichier joint.
Dans toto_avant il y a plusieurs saut de lignes.
Et dans toto_apres, il n'y a plus aucun saut de ligne que ca sois en debut, milieu ou fin.
Dans toto_avant il y a plusieurs saut de lignes.
Et dans toto_apres, il n'y a plus aucun saut de ligne que ca sois en debut, milieu ou fin.
- Fichiers joints
-
toto_apres.txt- (30 Octets) Téléchargé 103 fois
-
toto_avant.txt- (42 Octets) Téléchargé 104 fois
- ZDS
- Membre émérite

- Messages : 554
- Enregistré le : jeu. 10 juin 2010 10:35
- Localisation : 22300 Cul-d'chouette Langue-de-vache
- Status : Hors ligne
Re: [..] Effacer la premiere et derneire ligne d'un fichier
Salut,
Voila un script qui devrait faire ce que tu souhaites :A bientôt !
Voila un script qui devrait faire ce que tu souhaites :
Code : Tout sélectionner
Local $origine = "toto_avant.txt"
Local $destination = "toto_apres2.txt"
Local $flux_origine = FileOpen($origine,0)
Local $flux_destination = FileOpen($destination,10)
Local $first_ligne = True
If $flux_origine <> -1 And $flux_destination <> -1 Then
While 1
$ligne = FileReadLine($flux_origine)
If @error = -1 Then ExitLoop
If $ligne = "" Then
; Ne rien faire, ligne vide à ne pas prendre en charge
ElseIf $first_ligne Then
; Si c'est une premiere ligne à ajouter au fichier, ecrire simplement la ligne (pas de CR en fin avec ReadLine)
FileWrite($flux_destination, $ligne)
$first_ligne = False
Else
; Si ce n'est pas une premiere ligne, ajouter un CR en début de ligne (pour ne pas ajouter à la suite de la précédente)
FileWrite($flux_destination, @CRLF&$ligne)
EndIf
Wend
EndIf
FileClose($flux_origine)
FileClose($flux_destination)ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
- Tlem
- Site Admin

- Messages : 11818
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Effacer la premiere et derneire ligne d'un fichier
Plein de chose sont possible, mais afin de ne pas être embêté par des limites quelconques, je vous suggère de faire une lecture du fichier ligne par ligne (avec FileReadLine en boucle comme dans l'exemple de la doc).
Pour chaque ligne lue, vous ré-écrivez un autre fichier (utilisez le FileOpen avant afin de travailler par le handle). Évidemment, avant de ré-écrire la ligne vous contrôlez si elle est vide ou non.
Voilà. Je pense que ce sera vraiment la solution la plus rapide et efficace (hormis celle utilisant une RegEx, mais qui sera limitée par la taille du fichier).
Edit : Grillé par ZDS ...
Pour chaque ligne lue, vous ré-écrivez un autre fichier (utilisez le FileOpen avant afin de travailler par le handle). Évidemment, avant de ré-écrire la ligne vous contrôlez si elle est vide ou non.
Voilà. Je pense que ce sera vraiment la solution la plus rapide et efficace (hormis celle utilisant une RegEx, mais qui sera limitée par la taille du fichier).
Edit : Grillé par ZDS ...
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
ethneldryt
- Status : Hors ligne
Re: [..] Effacer la premiere et derneire ligne d'un fichier
A oui j'avais pas penser a cela. merci a tous 
- sylvanie
- Niveau 11

- Messages : 1556
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
Re: [R] Effacer la premiere et dernière ligne d'un fichier t
Bonsoir,
J'avais préparé ça pendant la journée (je ne peux pas poster à ce moment là ...)
Du coups j'arrive un peu tard ...
ça fait toujours une 2eme façon de faire ...
J'avais préparé ça pendant la journée (je ne peux pas poster à ce moment là ...)
Du coups j'arrive un peu tard ...
► Afficher le texte
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.

