[R] Supprimer ligne vide d'un fichier

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jcaspar
Niveau 7
Niveau 7
Messages : 449
Enregistré le : mar. 23 sept. 2008 17:58
Status : Hors ligne

[R] Supprimer ligne vide d'un fichier

#1

Message par jcaspar »

B :D onjour à tous !


Je souhaiterais supprimer les lignes vides d'un fichier avec le code ci dessous je parviens à lire le contenu du fichier, mais je ne vois pas comment detecter si une ligne est vide puis la supprimer .... la creation d'un tableau sans ligne vide me conviendrait également ....

Il me semble qu'une piste se trouve dans le topic suivant
http://www.autoitscript.fr/forum/viewto ... f=3&t=7224

En vous remerciant pour vos conseils :mrgreen:

Jean-Marc

Code : Tout sélectionner

#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <Array.au3>


$fichier=FileOpen("console.log")
$lecture=FileReadLine($fichier, 1)
$tableau=FileReadToArray($fichier)
_ArrayDisplay($tableau)

if StringCompare($tableau[1],"",0)=0 Then _ArrayDelete($tableau, 1)

 
Modifié en dernier par jcaspar le lun. 01 sept. 2014 18:28, modifié 1 fois.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Supprimer ligne vide d'un fichier

#2

Message par jchd »

Tu ne veux certainement pas ne traiter que la ligne 1 ! Faut boucler m'sieur Michu.
Sinon, plus rapide :

Code : Tout sélectionner

#include <Array.au3>

;~ Local $fichier = "console.log"
;~ Local $lecture = FileRead($fichier)
$lecture = @CRLF & "abc" & @CRLF & "def" & @LF & @CR & "ghi" & @CRLF    ; pseudo-fichier d'essai
Local $avant = StringRegExp($lecture, "(?m)(.*)\R", 3)
ConsoleWrite("Avant :" & @LF & "============" & @LF & $lecture & @LF & "============" & @LF)
_ArrayDisplay($avant)
Local $sanslignesvides = StringRegExpReplace($lecture, "(?m)(^\R)", "")
ConsoleWrite("Après :" & @LF & "============" & @LF & $sanslignesvides & "============" & @LF)
; si tu veux un tableau :
Local $tableau = StringRegExp($sanslignesvides, "(?m)(^.*$)", 3)
_ArrayDisplay($tableau)
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
jcaspar
Niveau 7
Niveau 7
Messages : 449
Enregistré le : mar. 23 sept. 2008 17:58
Status : Hors ligne

Re: [..] Supprimer ligne vide d'un fichier

#3

Message par jcaspar »

Merci beaucoup pour cette réponse !
POuriez vous svp donner à Monsieur Michu lol un exemple avec une boucle ?
Je presume qu'il s'agit d'une boucle for next ... mais mon idée n'est pas bonne ...

Code : Tout sélectionner

for filereadeline($fichier,$i) 
$i++
next
 
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [..] Supprimer ligne vide d'un fichier

#4

Message par aulus »

Bonjour,

Je remarque que le code proposé pour supprimer les lignes vides d'un fichier ne supprime pas les lignes vides situées en fin de fichier. Quelle en est la raison ?

Code : Tout sélectionner

Local $lecture = FileRead($monFichierTexte)
Local $sanslignesvides = StringRegExpReplace($lecture, "(?m)(^\R)", "")
Local $hFileWrite = FileOpen($monFichierTexte,2) ; réécriture du fichier
FileWrite($hFileWrite, $sanslignesvides)
FileClose($hFileWrite)
 
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Supprimer ligne vide d'un fichier

#5

Message par jchd »

Ahem, avec 310 posts au compteur on pourrait supposer que tu as été informé qu'il y avait une aide complète sur beaucoup de choses.

Si tu tiens absolument à rendre cette opération beaucoup plus lente, tu peux faire ça :
► Afficher le texte
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Supprimer ligne vide d'un fichier

#6

Message par jchd »

Aulus,

Bah, c'est un vieux débat. Doit-on conserver/compter ou pas la dernière terminaison de ligne d'un fichier texte ?
Corollaire : qu'est-ce qu'une ligne ?

Selon la convention qu'on applique à soi-même, on considèrera donc que "abc" & @CRLF contient 1 ou 2 lignes.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [..] Supprimer ligne vide d'un fichier

#7

Message par aulus »

J'ai résolu le problème par :

Code : Tout sélectionner

$sanslignesvides = StringStripWS($sanslignesvides, 3)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Supprimer ligne vide d'un fichier

#8

Message par mikell »

jc, ton code n'enlève pas les lignes "vides" qui contiennent quelques espaces (\s*)
Perso j'utilise ça

Code : Tout sélectionner

#Include <Array.au3>

$file = FileRead("1.txt")
$lines = StringRegExp($file, '(?m)(^.+)\s*\R?', 3)
_ArrayDisplay($lines)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Supprimer ligne vide d'un fichier

#9

Message par jchd »

Là encore, tout dépend de ce qu'on appelle vide. Pour moi " " <> "". Si on parle de lignes non significatives, alors c'est autre chose : est-ce que "<br>" est significative ?

Comme toujours, définition ou spécification vague = tsunami de "oui mais ceci", "du coup cela". Mais ce n'est pas un scoop pour toi.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Répondre