IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Ecrire dans un fichier en sautant des lignes


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 19
    Points : 11
    Points
    11
    Par défaut Ecrire dans un fichier en sautant des lignes
    Bonjour,
    Je dispose d'un fichier dont le nom est uds18 qui est composé de 150 lignes qui ont le même format.
    Voici un exemple avec 2 lignes
    testa:voiture1280480 680 blanc
    testb:camion1561311 871 vert
    Je souhaite ouvrir mon fichier uds, pour toutes les lignes, diviser la lignes en deux. Je vais prendre la première partie de la ligne pour créer un fichier à son nom et mettre la seconde partie de la ligne dans ce fichier en ajoutant 0 et 0 sur la premiere puis sur la seconde ligne
    Voici ce que ça doit me donner
    pour le premier fichier, son nom sera testa et il va contenir
    0
    0
    voiture1280480 680 blanc
    et le second fichier, nom sera testb et il va contenir
    0
    0
    camion1561311 871 vert
    Mais ça ne fonctionne pas, voici ce que j'obtiens:
    00voiture1280480 680 blanc
    00camion1561311 871 vert
    Je n'arrive pas à sauter une ligne après le premier 0 de la ligne 1, ni après le second 0 pour tout avoir sur 3 lignes.
    Je vous remercie pour votre aide.
    Voici mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #!/usr/bin/perl
     
    open(uds18,"uds18") || die ("Problème à l\'ouverture : $!");
     
         $i = 0;
     
         while(<uds18>) #voici une boucle pour parcourir tout mon fichier
          {
            $i ++;
            $lignecomplete=$_; #j'affecte chaque ligne à lignecomplete
            (@maligne) = split(/:/,$lignecomplete); #je coupe ligne complete en 2 apres le :
              print "voici la decoupe du nom du fichier $maligne[0]\n";#je constate que split fonctionne bien
              print "voici la decoupe des donnees $maligne[1]\n";
            $nomfic = $maligne[0];
            $donnees = $maligne[1];
            open(nomfic, ">>test.txt") || die ("Problème à l\'ouverture : $!");#creation de mon fichier en ecriture
            print nomfic 0; #j'ajoute un 0 en premier ligne mais COMMENT SAUTER UNE LIGNE APRES
            print nomfic 0; #j'ajoute 2ieme 0 en seconde ligne mais COMMENT SAUTER UNE LIGNE APRES
            print nomfic $donnees; #j'ajoute les donnees ensuite
            rename ("test.txt","$maligne[0]"); #je renomme mon fichier
          }
     
         print "\nNombre de lignes : $i\n";#c'est un controle
     
    close (uds18 || die "Problème à la fermeture : $!");

  2. #2
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    pour sauter une ligne, peux tu essayer :

    print nomfic 0 . "\n";

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Bonjour,
    Merci pour ta réponse mais ça ne fonctionne pas.J'ai toujours un affichage sur 1 seule ligne.

    Help please je cherche partout mais je n'y arrive pas.

  4. #4
    Membre confirmé Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 570
    Points
    570
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #!/usr/bin/env perl -w
    use strict;
     
    open my $input_fh, '<', "uds18"
    	or die "$!\n";
     
    while (<$input_fh>) {
    	chomp;
    	(my $name, my $content) = split (':');
    	# print "$name$content\n";
    	open my $output_fh, '>', $name
    		or die "$!\n";
    	print $output_fh "0\n0\n$content\n";
    	close $output_fh;
    }
    J'ai essayé d'être clair dans le code, d'où l'absence de commentaire. N'hésite pas à demander si quelque chose t'échappe.

    Tu remarqueras l'usage du pragma strict, indispensable pour se prémunir de bugs grossiers. De même l'usage de variables est préférable (si tu as un perl «récent») pour les handle de fichier.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Merci à tout le monde.ça fonctionne maintenant.
    Encore Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 3.X] Ecrire dans un fichier à un index de ligne précis
    Par nilslauwers dans le forum Général Python
    Réponses: 8
    Dernier message: 20/05/2015, 22h50
  2. Ecrire dans un fichier binaire en inversant les poids des bits
    Par zejo63 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 09/07/2007, 15h11
  3. Réponses: 2
    Dernier message: 06/06/2007, 16h27
  4. [VB.NET] ecrire dans un fichier des balise HTML et autres
    Par mael94420 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 28/03/2007, 13h34
  5. ecrire dans un fichier un retour a la ligne
    Par ETI-trian dans le forum C++
    Réponses: 8
    Dernier message: 17/10/2005, 09h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo