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 :

Effectuer une difference de fichier avec difflib en excluant une ligne


Sujet :

Python

  1. #1
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut Effectuer une difference de fichier avec difflib en excluant une ligne
    Bonjour,

    voila, j'ai deux fichiers dont je dois faire la comparaison.
    Je sais d'avance, que je ne dois pas comparer la derniere ligne car elle contient des données de débug.

    J'ai regardé difflib, mais j'ai pas vu d'options pour faire ce que je veux.....

    Pourriez vous m'aider ?
    Merci .
    F.

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Voilà un petit code qui devrait résoudre le problème. On supposera que ce sont 2 fichiers 'texte' de même encodage:

    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
    26
    27
    28
    29
    30
    31
     
    nf1 = r"D:\Python\Pydev\test\comp1_test.txt"
    nf2 = r"D:\Python\Pydev\test\comp2_test.txt"
     
    f1 = open(nf1, 'r')
    f2 = open(nf2, 'r')
     
    err = 0 # indique la ligne de la 1ère différence trouvée
    i = 0  # compteur de ligne
    for ligne1 in f1:
        i += 1
        ligne2 = f2.readline()
        if err == 0:
            if ligne1 != ligne2:
                err = i
     
    if (err==0 or err==i) and len(f2.readline())==0:
        # si err==0, on n'a pas trouvé de différence
        # si err==i, la 1ère différence trouvée est à la dernière ligne, ce qui est ok
        # si len(f2.readline())==0, le 2ème fichier n'est pas plus long que le 1er
        ok = True
    else:
        ok = False
     
    if ok:
        print u"les 2 fichiers sont identiques (dernière ligne exclue)"
    else:
        print u"les 2 fichiers sont différents (dernière ligne exclue)"
     
    f1.close()
    f2.close()
    On peut aussi, après un verdict final négatif (ok==False), faire ressortir le motif d'un refus:

    - si err>0 et err<i, alors err donne le numéro de ligne de la 1ère différence trouvée
    - sinon, le 2ème fichier est plus long que le 1er

    Et si c'est le 2ème fichier qui est plus court que le 1er, l'erreur sera détectée puisque ligne2 donnera une chaine vide (NB: une ligne de texte vide donne au moins en lecture le séparateur de ligne!).

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    merci, ca marche

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

Discussions similaires

  1. etbalir une arborescence des fichiers avec java
    Par groupe dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 13/03/2008, 02h02
  2. renommer un fichier avec la valeur d'une cellule
    Par 241P17 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/03/2008, 22h55
  3. Ouvrir via une macro un fichier avec mot de passe.
    Par Drost dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/10/2007, 14h47
  4. [VBA]Problème avec les critères d'une recherche de fichier
    Par lucho013 dans le forum VBA Access
    Réponses: 3
    Dernier message: 16/04/2007, 23h40
  5. Réponses: 3
    Dernier message: 19/10/2005, 15h58

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