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 :

controle nom fichier +extension [Python 2.X]


Sujet :

Python

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 321
    Par défaut controle nom fichier +extension
    bonjour,

    j'essaye de créer un script qui contrôle la présence de fichier dans un dossier ainsi que ces extensions. un même nom de fichier peut avoir plusieurs extension.

    j'ai réussit à la faire mais je ne suis pas sûr que ce soit la bonne manière de faire , alors si quelqu' un à quelques conseils à me donner... merci d'avance

    1 obtenir la liste des fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    path=.....
    listefichier=[]
    liste_fich=os.listdir(path)
        for row in liste_fich:
            ext=os.path.splitext(row)
            listefichier.append(ext)
    2 transformer la liste en dico

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for x,y in a:
            if x in dico and y!='.xml':
                dico[x].append(y)
            elif y!='.xml':
                dico[x]=[y]  
            else:
                pass
    3 contrôler les extensions et nom de fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    table_livre= liste des fichiers attendu
     
    for keys, value in dico.items():
            if  keys.upper() in table_livre:
                print 'ok {0}'.format(keys)
                a=set(['.dbf','.prj','.shp', '.shx'])-set(value)
                if a:
                    print 'no extension {0} pour {1}'.format(a,keys)
                else:
                    print 'extension ok pour {0}'.format(keys)
            else:
                print 'no {0}'.format(keys)

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par bernards111 Voir le message
    j'ai réussit à la faire mais je ne suis pas sûr que ce soit la bonne manière de faire , alors si quelqu' un à quelques conseils à me donner
    ok

    Citation Envoyé par bernards111 Voir le message
    1 obtenir la liste des fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    path=.....
    listefichier=[]
    liste_fich=os.listdir(path)
        for row in liste_fich:
            ext=os.path.splitext(row)
            listefichier.append(ext)
    Mouais. Pourquoi la ligne 4 est décalée ? Ce n'est pas une structure de travail spécifique (if/for/while)
    listefichier=tuple(os.path.splitext(x) for x in os.listdir(path)) et voilà comment c'est torché en une ligne.

    Citation Envoyé par bernards111 Voir le message
    2 transformer la liste en dico

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for x,y in a:
            if x in dico and y!='.xml':
                dico[x].append(y)
            elif y!='.xml':
                dico[x]=[y]  
            else:
                pass
    Donc là je pige que dalle. T'aimes pas les .xml ? Et tu ne les aimes pas 2 fois apparemment. Et sinon ben on ne fait rien (pourquoi écrire un truc alors ?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for x,y in a:
    	if y == ".xml": continue
    	if x not in dico: dico[x]=[]
    	dico[x].append(y)
    Citation Envoyé par bernards111 Voir le message
    3 contrôler les extensions et nom de fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    table_livre= liste des fichiers attendu
     
    for keys, value in dico.items():
            if  keys.upper() in table_livre:
                print 'ok {0}'.format(keys)
                a=set(['.dbf','.prj','.shp', '.shx'])-set(value)
                if a:
                    print 'no extension {0} pour {1}'.format(a,keys)
                else:
                    print 'extension ok pour {0}'.format(keys)
            else:
                print 'no {0}'.format(keys)
    Mouais. Si "value" était destiné à être traité comme un set dès le départ, autant alors le créer en "set" dans le dico. Sinon ben oui, ça marche. Perso j'aurais pris un autre nom que "a" (un nom qui ait un peu de gueule quoi) mais ça va...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 321
    Par défaut
    ok pour le set
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    def liste_versdico(dictionnaire):
     
        for x,y in dictionnaire:
                if y == ".xml": continue
                if x not in dico: dico[x]=set([])
                dico[x].add(y)
    je manque de pratique..merci de ton temps

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bernards111 Voir le message
    if x not in dico: dico[x]=set([])
    if x not in dico: dico[x]=set()
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/11/2010, 11h12
  2. Réponses: 1
    Dernier message: 30/06/2010, 16h54
  3. Récupérer nom fichier sans extension
    Par Newenda dans le forum MATLAB
    Réponses: 3
    Dernier message: 07/12/2009, 15h49
  4. Avec TopenDialog et nom de fichier + extension
    Par cincap dans le forum Débuter
    Réponses: 4
    Dernier message: 12/05/2009, 10h45
  5. comment controler un fichier uploader (extension)
    Par mama07 dans le forum Langage
    Réponses: 2
    Dernier message: 22/06/2007, 13h21

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