Page 1 sur 1

[R] Ecriture dans 2 fichier lente

Posté : mar. 02 déc. 2014 11:17
par Clampu
Salut à tous,

J'ai fait un petit script pour parser un fichier : je lis ligne par ligne, et en écris certains dans fichier1, certains dans fichier2. Or, si je fais comme ça, c'est très lent. Si par contre je fais 2 boucles, l'une écrivant dans fichier1 puis une autre boucle pour écrire dans le fichier2, c'est rapide.

Ma question est : pourquoi ? Autoit est il obliger de fermer fichier1 pour écrire dans fichier2 ?
J'ai bien trouvé la solution, mais le code est pas très claire j'aimerai savoir pourquoi, et s'il était possible de faire ça dans une seule boucle (plus pratique car des lignes sont communes aux 2 fichiers)

Re: [..] Ecriture dans 2 fichier lente

Posté : mar. 02 déc. 2014 11:30
par Faco
Salut,

tu fais peut être des truc en trop, il faudrait que tu post ton code si tu veux que l'on nettoie tout ça ;-)

Re: [..] Ecriture dans 2 fichier lente

Posté : mar. 02 déc. 2014 11:46
par Clampu
Je pige pas, j'ai relancé le code qui était lent, il est maintenant aussi rapide que l'autre...
Peut être une lenteur sur le réseau (j'écris pas sur ma machine) ?
Je peux passer en résolu.

Pour info, le code :
► Afficher le texte

Re: [R] Ecriture dans 2 fichier lente

Posté : mar. 02 déc. 2014 11:59
par Faco
ton code a pas l'air mauvais, peut être un truc (à vérifier avec les pro):

Code : Tout sélectionner

If FileExists($chemin_OUTCMU) Then
   FileDelete($chemin_OUTCMU)
EndIf
If FileExists($chemin_OUTnotCMU) Then
   FileDelete($chemin_OUTnotCMU)
EndIf

_FileCreate($chemin_OUTCMU)
Local $OUTCMU = FileOpen($chemin_OUTCMU, $FO_READ + $FO_OVERWRITE)
_FileCreate($chemin_OUTnotCMU)
Local $OUTnotCMU = FileOpen($chemin_OUTnotCMU, $FO_READ + $FO_OVERWRITE)
 
avec fileopen tu peux créer le fichier et avec overwrite tu écrase son ancien contenu donc le bout de code du dessus peux prendre que 2 lignes (-fileexists,-filedelete et -filecreate)

Re: [R] Ecriture dans 2 fichier lente

Posté : mar. 02 déc. 2014 12:02
par Clampu
Yep pas bête, mais j'ai codé ça vite fait c'était urgent pour un gros fichier donc pas le temps d'optimiser parfaitement. Merci en tous cas ;)