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 :

Recherche d'une séquence de caractères dans un fichier


Sujet :

Python

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 489
    Par défaut Recherche d'une séquence de caractères dans un fichier
    Bonjour,

    J'ai un fichier binaire dans lequel je doit détecter la séquence de caractère "BR".
    J'ai testé ce 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
    with open(f, encoding="utf8", errors='ignore') as binary_file:
                try:
                    while True:
                        start1 = binary_file.read(2)
                        try:
                            if start1 == "BR":
                                print("détection BR")
                        except IOError:
                            pass
                except IOError:
                    pass
                finally:
                    binary_file.close()
                    print("FIN")
    Il détecte bien des séquences "BR", et au but d'un moment, il continue à tourner (sans planter), mais je vois jamais arriver le print("FIN").
    Donc je sais pas si il tourne dans le vide, ou si il tourne vraiment longtemps (1h !)

    Donc :
    Est-ce que le code pour rechercher ma séquence "BR" est correct?
    Comment savoir s'il tourne dans le vide?

    Merci,
    Nico

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 700
    Par défaut
    Salut,

    Citation Envoyé par DiverSIG Voir le message
    Est-ce que le code pour rechercher ma séquence "BR" est correct?
    Comment savoir s'il tourne dans le vide?
    Lorsque vous écrivez "while True" (ou "while condition"), la première question à laquelle vous devez répondre est comment on en sort (ou est-ce que condition à des chances de devenir False).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    Citation Envoyé par DiverSIG Voir le message
    Il détecte bien des séquences "BR",
    Il me semble que ton code peut louper quelques séquences...

    Par exemple si dans dans ton fichier tu as "aBRtoto" le code ne détecte pas la séquence "BR"...

    La raison est que tu lis le fichier 2 caractères par 2 caractères...

    Ainsi la première fois start1 vaut "aB" et la seconde fois il vaut "Rt" donc le test if start1 == "BR": est faux dans les deux cas...

    Avec ce code ci-après on peut savoir si le fichier contient au moins une séquence "BR" :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    with open(f, encoding="utf8", errors='ignore') as file:    
        line = file.read()    
        if "BR" in line:
            print("détection BR")
        else :
            print("BR non détectè")   
     
    print("FIN")


    PS : Est-ce que tous ces try sont nécessaires ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 700
    Par défaut
    Salut,

    Citation Envoyé par Beginner. Voir le message
    Il me semble que ton code peut louper quelques séquences...
    Il y a pire.
    D'un côte on dit:
    J'ai un fichier binaire dans lequel je doit détecter la séquence de caractère "BR".
    mais on l'ouvre comme un fichier texte codé utf-8:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open(f, encoding="utf8", errors='ignore') as binary_file:
    en demandant la suppression explicites de données lorsque ce n'est plus de l'utf-8.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Oui effectivement, je ne comprenais pas non plus pourquoi il parlait de fichier binaire,
    d'ailleurs dans le code que j'ai proposé en exemple j'ai remplacé binary_file par file...

Discussions similaires

  1. Réponses: 9
    Dernier message: 04/12/2014, 17h26
  2. Rechercher/remplacer une chaine de caractères dans plusieurs fichiers
    Par _shuriken_ dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 31/07/2011, 20h06
  3. Réponses: 3
    Dernier message: 25/07/2006, 08h40
  4. [VB]Recherche d'une chaine de caractère dans un fichier
    Par Empty_body dans le forum VB 6 et antérieur
    Réponses: 26
    Dernier message: 16/02/2006, 09h10

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