PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.python > Liste ordonnée du contenu d'un répertoire
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Liste ordonnée du contenu d'un répertoire

Réponse
 
LinkBack Outils de la discussion
Vieux 15/09/2007, 15h32   #1
rémi
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Liste ordonnée du contenu d'un répertoire

Bonjour,

Comment faire pour avoir une liste des fichiers contenus dans un
répertoire ? Une liste ordonnée suivant la date de crétion par exemple.

Mes deux pistes qui ne donnent pas le résultat voulu :
*listdir() du module os renvoie une liste dans un ordre arbitraire.
*le code suivant aussi donne un ordre arbitraire :
import glob
for fichier in glob.glob(r'*.jpg'):
print fichier
Pourtant, j'ai bien crée des fichiers 1.jpg, 2.jpg...
:-s
Une idée ?
Merci.
Rémi.
  Réponse avec citation
Vieux 15/09/2007, 16h28   #2
rémi
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Liste ordonnée du contenu d'un répertoire

Le Sat, 15 Sep 2007 14:32:31 +0000, rémi a écrit:

> Bonjour,
>
> Comment faire pour avoir une liste des fichiers contenus dans un
> répertoire ? Une liste ordonnée suivant la date de crétion par exemple.
>
> Mes deux pistes qui ne donnent pas le résultat voulu :
> *listdir() du module os renvoie une liste dans un ordre arbitraire.
> *le code suivant aussi donne un ordre arbitraire :
> import glob
> for fichier in glob.glob(r'*.jpg'):
> print fichier
> Pourtant, j'ai bien crée des fichiers 1.jpg, 2.jpg...
> :-s
> Une idée ?


Un liste.sort() semble fonctionner mais, il me semble, c'est parce que les
noms peuvent être classés alphabétiquement.
  Réponse avec citation
Vieux 15/09/2007, 16h59   #3
Salvatore
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Liste ordonnée du contenu d'un répertoire

Bonjour Rémi,

Regarde ici :

http://www.daniweb.com/code/snippet451.html

Cordialement
  Réponse avec citation
Vieux 15/09/2007, 20h29   #4
Méta-MCI (MVP)
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Liste ordonnée du contenu d'un répertoire

Bonsoir !


Regarde la doc pour os.stat( )
Attention, sous windows, selon le formatage du disque, le nombre de datetime varie (1 pour FAT, 3 ou
plus pour NTFS) ; et FAT est souvent employé sur les clefs-USB


@+

Michel Claveau




  Réponse avec citation
Vieux 16/09/2007, 08h30   #5
Pierre Quentel
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Liste ordonnée du contenu d'un répertoire

Bonjour,

Il faut commencer par récupérer la liste des noms de fichiers par
os.listdir, puis faire un sort() sur cette liste en donnant comme
argument de sort() une fonction qui compare deux valeurs

Pour un tri alphabétique, cette valeur est le nom du fichier (ou le
nom en minuscule si on veut que les A et les a apparaissent ensemble,
et pas les A après les z)

Pour un tri par date de création, la valeur est la date de création,
qu'on obtient par os.stat(nom_fichier).st_ctime (nom_fichier est le
nom complet, répertoire compris)

Voilà ce que ça donne :

==============
import os

def tri_alpha(rep):
# tri par ordre alphabetique
files = os.listdir(rep)
files.sort(lambda x,y:cmp(x.lower(),y.lower()))
return files

def compare_date_creation(f1,f2):
# fonction de comparaison de dates de création
d1 = os.stat(f1).st_ctime
d2 = os.stat(f2).st_ctime
return cmp(d1,d2)

def tri_date_creation(rep):
files = os.listdir(rep)
# nom complet y compris repertoire
files = [os.path.join(rep,f) for f in files]
files.sort(compare_date_creation)
# enlever le nom du repertoire
return [ os.path.basename(f) for f in files ]

print tri_alpha(os.getcwd())
print tri_date_creation(os.getcwd())
=========================

A+
Pierre

  Réponse avec citation
Vieux 16/09/2007, 13h01   #6
Méta-MCI \(MVP\)
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Liste ordonnée du contenu d'un répertoire

Salut !

Petite précision : les datetime des fichiers sont soumises à une notion floue, la granulité. En
gros, cela signifie que le datetime utilisé est approximatif. Par exemple, sous windows avec FAT,
la granulité est de 2 secondes.

Cela peut être important, lorsque l'on veut savoir si un fichier est plus récent qu'un autre (le
sauvegarder ou non ?). En clair, il faut ignorer les écarts supérieur à la granulité.

Malheureusement, il est très difficile de savoir quelle est la granulité d'un OS, sur un disque
particulier.

@-salutations

Michel Claveau

  Réponse avec citation
Vieux 16/09/2007, 13h53   #7
MC
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Liste ordonnée du contenu d'un répertoire

Re !

Correctif :
> ignorer les écarts INFERIEURS à la granulité


Désolé pour la gêne...








--
@-salutations

Michel Claveau


  Réponse avec citation
Vieux 17/09/2007, 06h04   #8
rémi
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Liste ordonnée du contenu d'un répertoire

Le Sun, 16 Sep 2007 00:30:23 -0700, Pierre Quentel a écrit:

> Bonjour,
>
> Il faut commencer par récupérer la liste des noms de fichiers par
> os.listdir, puis faire un sort() sur cette liste en donnant comme
> argument de sort() une fonction qui compare deux valeurs
>
> Pour un tri alphabétique, cette valeur est le nom du fichier (ou le
> nom en minuscule si on veut que les A et les a apparaissent ensemble,
> et pas les A après les z)


Oui un sort() sur la liste arrive à très bien classé des fichiers dont le
noms contient des lettres et des chiffres. Par exemple les fichiers images
du type DSCM2045.jpg.


> Pour un tri par date de création, la valeur est la date de création,
> qu'on obtient par os.stat(nom_fichier).st_ctime (nom_fichier est le
> nom complet, répertoire compris)
>
> Voilà ce que ça donne :


>[...]


Merci beaucoup pour cette intéressante contribution ! :-)
Très prédagogique en plus pour un éternel débutant comme moi.
Merci à Salvatore aussi pour son lien.
@+
Rémi.
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 07h18.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,13031 seconds with 16 queries