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 :

Retourner taille et type de fichiers, renommer en déplacer


Sujet :

Python

  1. #1
    Invité
    Invité(e)
    Par défaut Retourner taille et type de fichiers, renommer en déplacer
    Bonjour !

    Voilà, je suis débutant en Python et bien que ce programme soit assez simple d'apprentissage, du moins comparé à d'autres, je bloque dans l'écriture d'un petit programme tout simple.
    Le but du programme est le suivant :

    J'ai 2 dossiers, l'un "samples" ou se trouvent des fichiers .wav nommés "sample_XX.wav" ou XX est le numéro dudit sample, l'autre FTP ou il est possible d'uploader des fichiers.
    Je souhaiterais que mon petit programme détecte la présence de nouveaux fichiers, et si il y en as, supprimer ce qui n'est pas .wav et d'une taille supérieure à 1 Mo. Ensuite, les renommer en fonction des autres samples présents dans le dossier "samples" (si "sample_37.wav" est le plus grand à ce moment là, renommer les nouveaux en commençant par "sample_38.wav").
    Pour finir, déplacer ces nouveaux samples du dossier FTP au dossier SAMPLES, et voilà

    Voici ou j'en suis pour le moment :

    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
    #!/usr/bin/env python
     
    import os, glob
     
    totalFTP = 0
    totalSAMPLES = 0
     
    # lister les samples du dossier FTP,
    # supprimer samples supérieurs à 1000Ko :
    for glob in glob.glob("ftp/*.wav"):
    	totalFTP = totalFTP + 1
    	if os.path.getsize(glob)/1000 > 1000:
                    os.remove(glob)
                    totalFTP = totalFTP - 1
     
    # lister les samples du dossier SAMPLES :
    for glob in glob.glob("*.wav"):
            totalSAMPLES = totalSAMPLES + 1
    Pour le moment la suppression des nouveaux fichiers supérieurs à 1000 Ko fonctionne bien.
    Là ou je bloque, c'est dans la récupération du type de fichier, et s'il n'est pas conforme à ".wav", le supprimer.

    J'ai trouvé une piste ici : http://python.developpez.com/faq/?page=Fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> os.path.splitext('c:\\python24\\python.exe') 
    ('c:\\python24\\python', '.exe')
    Seulement je ne sais pas comment dire "si l'extension ('.exe' dans l'exemple) n'est pas ".wav", supprimer"...

    Comment pourrais-je faire s'il vous plait ?

    Merci beaucoup

  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,

    Comme ça?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.path.splitext('c:\\python24\\python.exe')[1] != ".wav"
    Au cas où il y aurait des extensions en majuscule et en minuscule, on pourrait faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.path.splitext('c:\\python24\\python.exe')[1].lower() != ".wav"
    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
    Invité
    Invité(e)
    Par défaut
    Ah merci beaucoup !

    J'étais en train de me dire que le plus simple serait d'instaurer un script d'envoi de fichier dans la page HTML qui n'accepterais que des fichiers .wav de moins de 1Mo... mais bien que je sois débutant en Python, je le suis encore plus en javascript (je suppose que c'est du javascript pour faire ça).

  4. #4
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Ça sort d'où cette idée de boucler sur une liste pour en connaître le nombre ? Tu es le deuxième en 24 heures [0].


    Ensuite, tu ne réalises pas la confusion que tu crées avec glob dans ton code ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import os, glob     # import de glob
    ...
    for glob in glob.glob("ftp/*.wav"):     # transformation de glob en élément de la liste retournée par glob.glob()
    	...
     
    # et maintenant qu'est-ce que glob ? 
    # celui en caractère gras dans la ligne qui suit, que désigne-t-il ?
    for glob in glob.glob("*.wav"):
        ...
    Procède par étape:
    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
     
    import os
     
    UPLOADDIR = "ftp"
    SAMPLEDIR = "samples"
     
    # d'abord ta liste de fichiers
    upfiles = os.listdir(UPLOADDIR)
     
    for item in upfiles:
        item = os.path.join(UPLOADDIR, item)
        size = os.path.getsize(item)/1000
        if size > 1000 or not os.path.splitext(item)[1].lower() == ".wav":
            # pas un wav ==> supprimer
            continue
     
        # Le fichier est bon ==> déplacer vers samples
    Note que s'il y a un risque d'avoir des fichiers sans extension, os.path.splitext(item)[1] se plantera.

    [0] http://www.developpez.net/forums/d14...al-d-resultat/

  5. #5
    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 VinsS,

    Citation Envoyé par VinsS Voir le message
    Note que s'il y a un risque d'avoir des fichiers sans extension, os.path.splitext(item)[1] se plantera.
    Non, heureusement, avec les Pythons récents (2 et 3), le 2e terme du tuple existera toujours et sera dans ce cas une chaine nulle.
    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

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/02/2011, 12h15
  2. [MySQL] Définir taille et type d'un fichier uploadé
    Par Stéph utilisateur d'acces dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 13/08/2009, 10h57
  3. [Delphi] Type de fichier DBISAM
    Par Henkyl dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/04/2004, 17h14
  4. Réponses: 10
    Dernier message: 18/11/2003, 18h01
  5. Bloquer le téléchargement de certains types de fichiers
    Par Nikos dans le forum Développement
    Réponses: 4
    Dernier message: 23/12/2002, 20h54

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