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 fichier ddur dans tableau [Python 2.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut Recherche fichier ddur dans tableau
    Bonjour,

    Je cherche à ajouter dans un tableau les fichiers d'un répertoire qui n'existe pas dans un tableau servant de base de données.

    fonctionne pour le première fichier mais ensuite j'ai l'ajout de tous les fichiers du répertoire (logique mais si je place un break après l'append, marche pas)

    La lecture du répertoire est correcte
    For pour la longueur du tableau ok

    en fait si la condition était de trouver les fichiers comportant le même nom entre le répertoire et la base la fonction marche bien (je met = au lieu de !=)
    Table_Dll_Win7_64 = base de données
    Tab_Dossier = le tableau à mettre à jour

    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
    32
     
                    def rech_Dll(Rep): 
     
                        if Rep != None:
     
                            xrep=Rep
     
                            for path, dirs, files in os.walk(Rep,topdown=False):
     
     
                                if dirs and path=='c:\\windows\\system32' :                                            # si repertoire present et repertoire = à
     
                                    for xname in range(len(Table_Dll_Win7_64)):                                       # boucle for longueur du tableau
     
                                        for filename in (files):                                                                 # boucle contenu fichiers repertoire
     
                                            if (filename[-4:]=='.dll') or (filename[-4:]=='.DLL'):                       # append que les .dll
                                                if (filename)!= str(Table_Dll_Win7_64[xname]):                        # si nom dll tableau different Dll Ddur
     
                                                    Tab_Dossier.append(path+' < '+(filename)+' >')                   # MAJ tableau pour edition
     
                                                    print (filename)
     
                                        try:
     
                                            if files!=None:
                                                continue
     
                                        except TypeError:
                                            continue
     
                        return

    Dans l'attente,
    merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    J'essaye de deviner ce que tu veux faire.

    Utilisé comme ceci Table_Dll_Win7_64[xname] ton tableau m'a tout l'air d'une liste. Si c'est le cas, ta procédure est totalement erronée.

    D'autre part, pourquoi utiliser os.walk si tu ne veux que les fichiers du dossier c:\\windows\\system32

    Est-ce que ceci ne fait pas la même chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    import glob
     
    def rech_Dll():
        files = glob.glob('c:\\windows\\system32\\*.*')
        for f in files:
            if os.path.splitext(f)[1] in ('.dll', '.DLL'):
                if not os.path.basename(f) in Table_Dll_Win7_64:
                    Tab_Dossier.append('c:\\windows\\system32' +' < ' + (f) + ' >')

  3. #3
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut
    Salut

    Je ne connaissais pas glob

    la fonction utilisera un autre repertoire d'ou le paramètre

    Table_Dll_Win7_64[xname] est déclaré comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Table_Dll_Win7_64=['accessibilitycpl.dll','ACCTRES.dll','acledit.dll','aclui.dll','acppage.dll','acproxy.dll','ActionCenter.dll'\
                       ,'ActionCenterCPL.dll','ActionQueue.dll','activeds.dll','actxprxy.dll','adprovider.dll','adsldp.dll','adsldpc.dll'\
                       ,'adsmsext.dll','adsnt.dll','adtschema.dll
    ]
    Tes lignes de code sont explicitent et beaucoup plus facile à comprendre
    merci

    mais avec files = glob.glob('c:\\windows\\system32\\*.*') ,je peux mettre files = glob.glob('c:\\windows\\system32\\*.dll') dans ce cas est-ce qu'il fait la différence avec DLL

  4. #4
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut
    Bonjour

    Je viens de réaliser un teste sur glob, c'est puissant et le traitement est immédiat
    je mettrais la solution finale, merci
    je dois encore voir si DLL = dll

    A bientôt

  5. #5
    Membre confirmé Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Par défaut
    Bonsoir,

    En résolu et je remet le code peut modifié.
    Encore merci pour glob

    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
     
    def rech_Dll(chemin,NbFic_lu):  # recherche des Dll manquantes sur systeme
                        path = chemin+'\\*.*'
                        files = glob.glob(path)
     
                        for f in files:
                            if os.path.splitext(f)[1] in ('.dll', '.DLL'):
                                if not os.path.basename(f) in Table_Dll_Win7_64:
                                    NbFic_lu += 1
                                    md5=md5fic(chemin,f)
                                    Tab_Dossier.append("MD5 [ "+md5+" ]"+' < '+(f)+' >') # MAJ tableau pour edition
                                    Listscan.insert(END,'MD5 [ '+md5+' ]'+' < '+f+' >') # affichage canvas du bas le fichier du Ddur et Non trouve dans tableau
                                    Listscan.update()
                                    Listtitle.delete(1,1)
                                    Listtitle.insert(1,'Nombre de Dll non référencée(s) : '+str(NbFic_lu)) # affichage canvas du haut
                                    Listtitle.itemconfig(1,fg='red')
                                    Listtitle.delete(5,5)
                                    Listtitle.insert(5,'Dernière Dll non référencée : '+(f))
                                    Listtitle.itemconfig(5,fg='red')
                                    Listtitle.update()
                                if len(Tab_Dossier)==0:
                                    Listtitle.delete(5,5)
                                    Listtitle.insert(5,'Aucune Dll détectée')
     
                        return(NbFic_lu)

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

Discussions similaires

  1. [XL-2007] Copie, recherche, insertion, données dans tableau
    Par stephst84 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 21/05/2010, 16h52
  2. Recherche élément médian dans tableau non trié
    Par chicorico dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2009, 17h39
  3. Recherche de doublons dans tableau
    Par mavean dans le forum Excel
    Réponses: 4
    Dernier message: 03/08/2008, 23h42
  4. écriture d'un fichier texte dans tableau
    Par minola dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 29/11/2007, 17h42
  5. Rechercher Fichier specifique dans un lecteur
    Par franck.automaticien dans le forum Scripts/Batch
    Réponses: 29
    Dernier message: 10/05/2007, 16h05

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