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

Python Discussion :

Copier un fichier dans un autre en retirant les lignes inutiles


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut Copier un fichier dans un autre en retirant les lignes inutiles
    Bonjour à tous,

    Etant débutant en programmation, je fais appel à vous. En effet, je cherche désespérément une solution pour enlever des lignes dans un fichier. Mon premier fichier s'intitule listid.txt ou je ne voudrais garder que les lignes ou j'ai justement ce job id (j'espere être clair ) et copier le resultat dans un autre fichier.

    Voila ce que j'ai pour l'instant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    def filtre(source, destination):
        fs = open(source, 'r')
        fd = file(destination, 'w')
        while 1:
            txt = fs.readline()
            if txt !='JOB ID':
               pass
            if txt[0] == 'JOB ID:':
                fd.write(txt)
                fs.close()
        fd.close()
        return
    J'appelle ensuite cette fonction avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filtre('C:\listid.txt', 'C:\jobid.txt')


    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je n'ai pas essayé, mais un truc comme ça devrait marcher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def filtre(source, destination):
        fs = open(source, 'r')
        fd = open(destination, 'w')
        for ligne in fs:
            if ligne.rstrip() == 'JOB ID:':
                fd.write(ligne)
        fd.close()
        fs.close()
        return
    Par contre, le lancement sera:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filtre(r'C:\listid.txt', r'C:\jobid.txt')
    ou:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filtre('C:\\listid.txt', 'C:\\jobid.txt')
    Sinon, les anti-slash seront interprétés, et ça causera une erreur.

    Tyrtamos

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut
    Je viens d'essayer ta méthode est malheureusement je me retrouve toujours avec mon deuxième fichier qui fait 0ko donc aucune donnée à l'intérieur mais merci de ton aide.

    Par contre je suis preneur si tu connais une autre méthode qui permet de faire la même chose

  4. #4
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Bonjour,
    Je ne comprends vraiment pas l interet de conserver des elements que l on connait deja de cette maniere. Vu que tu ne conserver que les lignes contenant
    JOB ID
    pourquoi ne pas simplement conserver le nombre de ligne que tu auras trouve correspondant. A moins que je n ai pas bien compris.
    En ce qui concerne ton code le
    probablement l element qui te pose probleme. De plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            if txt[0] == 'JOB ID:':
    <txt[0]> est un caractere donc il est impossible que ton test soit ne serait ce une fois correct.
    De plus, tu lis une ligne mais n en reecrit pas une.
    Donc en gros, sauf erreur de ma part, voici ce que tu devrais obtenir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def filtre(source, destination):
        fs = open(source, 'r')
        fd = file(destination, 'w')
        txt = fs.readline()
        while txt:
            if txt[:6] == 'JOB ID:':
                fd.write(txt+'\n')
            txt = fs.readline()
        fs.close()
        fd.close()
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut
    Essayé mais cela ne fonctionne toujours pas.

    Je vais essayer de reexpliquer concrétement.

    L'entreprise dans laquelle je bose utilise nagios, et backup exec de symantec pour les sauvegardes.

    Grace a une commande de backup exec je peux recuperer dans un fichier texte tout les jobs. Ce aui m'interesse dans ce fichier c'est simplement les lignes ou le logiciel stipule les JOB ID.

    Donc si quelqu'un pouvait m'aider : il faut lire le fichier, prendre toutes les lignes commencant par JOB ID et les reecrire dans un autre.

    Merci de votre aide

  6. #6
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Re: petite erreur dans le code precedent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def filtre(source, destination):
        fs = open(source, 'r')
        fd = file(destination, 'w')
        txt = fs.readline()
        while txt:
            if txt[:6] == 'JOB ID':
                fd.write(txt+'\n')
            txt = fs.readline()
        fs.close()
        fd.close()
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut
    Citation Envoyé par afranck64 Voir le message
    Re: petite erreur dans le code precedent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def filtre(source, destination):
        fs = open(source, 'r')
        fd = file(destination, 'w')
        txt = fs.readline()
        while txt:
            if txt[:6] == 'JOB ID':
                fd.write(txt+'\n')
            txt = fs.readline()
        fs.close()
        fd.close()
    C'est ça la solution! Un grand merci à toi!

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

Discussions similaires

  1. copier un fichier dans un autre
    Par princesse_carole dans le forum Débuter
    Réponses: 7
    Dernier message: 03/10/2011, 20h26
  2. Copier 2 fichiers dans un autre
    Par lah.123 dans le forum z/OS
    Réponses: 4
    Dernier message: 01/01/2010, 22h20
  3. Réponses: 9
    Dernier message: 20/02/2009, 17h51
  4. copier un fichier dans un autre repertoire
    Par arnest dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/03/2008, 14h02
  5. Copier un fichier dans un autre
    Par groupe dans le forum Débuter
    Réponses: 5
    Dernier message: 29/02/2008, 22h32

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