[R] Effacer la premiere et dernière ligne d'un fichier text

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
ethneldryt
Status : Hors ligne

[R] Effacer la premiere et dernière ligne d'un fichier text

#1

Message par ethneldryt »

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
-----------------------------
Modifié en dernier par ethneldryt le ven. 01 avr. 2011 18:04, modifié 1 fois.
Avatar du membre
fred39
Niveau 4
Niveau 4
Messages : 64
Enregistré le : lun. 05 mai 2008 10:03
Status : Hors ligne

Re: [..] Effacer la premiere et derneire ligne d'un fichier

#2

Message par fred39 »

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:

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)
Bonne soirée
ethneldryt
Status : Hors ligne

Re: [..] Effacer la premiere et derneire ligne d'un fichier

#3

Message par ethneldryt »

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
Avatar du membre
fred39
Niveau 4
Niveau 4
Messages : 64
Enregistré le : lun. 05 mai 2008 10:03
Status : Hors ligne

Re: [..] Effacer la premiere et derneire ligne d'un fichier

#4

Message par fred39 »

Alors comme ceci
► Afficher le texte
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
ethneldryt
Status : Hors ligne

Re: [..] Effacer la premiere et derneire ligne d'un fichier

#5

Message par ethneldryt »

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
Avatar du membre
fred39
Niveau 4
Niveau 4
Messages : 64
Enregistré le : lun. 05 mai 2008 10:03
Status : Hors ligne

Re: [..] Effacer la premiere et derneire ligne d'un fichier

#6

Message par fred39 »

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
Avatar du membre
Tlem
Site Admin
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

#7

Message par Tlem »

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é".
ethneldryt
Status : Hors ligne

Re: [..] Effacer la premiere et derneire ligne d'un fichier

#8

Message par ethneldryt »

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.
Fichiers joints
toto_apres.txt
(30 Octets) Téléchargé 103 fois
toto_avant.txt
(42 Octets) Téléchargé 104 fois
Avatar du membre
ZDS
Membre émérite
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

#9

Message par ZDS »

Salut,

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)
A bientôt !
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 !
Avatar du membre
Tlem
Site Admin
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

#10

Message par Tlem »

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. :roll:

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é".
ethneldryt
Status : Hors ligne

Re: [..] Effacer la premiere et derneire ligne d'un fichier

#11

Message par ethneldryt »

A oui j'avais pas penser a cela. merci a tous :)
Avatar du membre
sylvanie
Niveau 11
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  

#12

Message par sylvanie »

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 ...
► Afficher le texte
ça fait toujours une 2eme façon de faire ...
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Répondre