265 votes

Comment est pythons glob.glob commandé?

J'ai écrit le code python suivant:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import os, glob

path = '/home/my/path'
for infile in glob.glob( os.path.join(path, '*.png') ):
    print infile

Maintenant, je reçois ceci:

/home/my/path/output0352.png
/home/my/path/output0005.png
/home/my/path/output0137.png
/home/my/path/output0202.png
/home/my/path/output0023.png
/home/my/path/output0048.png
/home/my/path/output0069.png
/home/my/path/output0246.png
/home/my/path/output0071.png
/home/my/path/output0402.png
/home/my/path/output0230.png
/home/my/path/output0182.png
/home/my/path/output0121.png
/home/my/path/output0104.png
/home/my/path/output0219.png
/home/my/path/output0226.png
/home/my/path/output0215.png
/home/my/path/output0266.png
/home/my/path/output0347.png
/home/my/path/output0295.png
/home/my/path/output0131.png
/home/my/path/output0208.png
/home/my/path/output0194.png

De quelle manière est-il commandé?

Il pourrait vous aider à obtenir mon ls -l sortie:

-rw-r--r-- 1 moose moose 627669 2011-07-17 17:26 output0005.png
-rw-r--r-- 1 moose moose 596417 2011-07-17 17:26 output0023.png
-rw-r--r-- 1 moose moose 543639 2011-07-17 17:26 output0048.png
-rw-r--r-- 1 moose moose 535384 2011-07-17 17:27 output0069.png
-rw-r--r-- 1 moose moose 543216 2011-07-17 17:27 output0071.png
-rw-r--r-- 1 moose moose 561776 2011-07-17 17:27 output0104.png
-rw-r--r-- 1 moose moose 501865 2011-07-17 17:27 output0121.png
-rw-r--r-- 1 moose moose 547144 2011-07-17 17:27 output0131.png
-rw-r--r-- 1 moose moose 530596 2011-07-17 17:27 output0137.png
-rw-r--r-- 1 moose moose 532567 2011-07-17 17:27 output0182.png
-rw-r--r-- 1 moose moose 553562 2011-07-17 17:27 output0194.png
-rw-r--r-- 1 moose moose 574065 2011-07-17 17:27 output0202.png
-rw-r--r-- 1 moose moose 552197 2011-07-17 17:27 output0208.png
-rw-r--r-- 1 moose moose 559809 2011-07-17 17:27 output0215.png
-rw-r--r-- 1 moose moose 549046 2011-07-17 17:27 output0219.png
-rw-r--r-- 1 moose moose 566661 2011-07-17 17:27 output0226.png
-rw-r--r-- 1 moose moose 561678 2011-07-17 17:27 output0246.png
-rw-r--r-- 1 moose moose 525550 2011-07-17 17:27 output0266.png
-rw-r--r-- 1 moose moose 565715 2011-07-17 17:27 output0295.png
-rw-r--r-- 1 moose moose 568381 2011-07-17 17:28 output0347.png
-rw-r--r-- 1 moose moose 532768 2011-07-17 17:28 output0352.png
-rw-r--r-- 1 moose moose 535818 2011-07-17 17:28 output0402.png

Il n'est pas ordonnée par nom de fichier ou sa taille.

Autres liens: glob, ls

532voto

gnibbler Points 103484

L'ordre est arbitraire, mais vous pouvez les trier vous-même

Si vous voulez triés par nom:

sorted(glob.glob('*.png'))

triés par date de modification:

import os
sorted(glob.glob('*.png'), key=os.path.getmtime)

triés par taille:

import os
sorted(glob.glob('*.png'), key=os.path.getsize)

etc.

144voto

Xion Points 11130

Il n'est probablement pas triés à tous et utilise l'ordre dans lequel les entrées apparaissent dans le système de fichiers, c'est à dire celui que vous obtenez lors de l'utilisation d' ls -U. (Au moins sur ma machine cela produit le même ordre d'inscription glob des matchs).

66voto

Ray Toal Points 35382

En vérifiant le code source de l' glob.glob vous voyez qu'il appelle en interne os.listdir, décrit ici:

http://docs.python.org/library/os.html?highlight=os.listdir#os.listdir

Phrase clé: os.listdir(chemin de) Retourne une liste contenant les noms des entrées dans le répertoire donné par le chemin. La liste est dans un ordre arbitraire. Il n'inclut pas les entrées spéciales '.' et'..', même si ils sont présents dans le répertoire.

Ordre arbitraire. :)

16voto

Andreas Jung Points 1

glob.glob() est un wrapper autour de l'os.listdir() de sorte que les OS sous-jacente est en charge de délivrer les données. En général: vous ne pouvez pas faire une hypothèse sur le bon de commande ici. L'hypothèse de base est: pas de commande. Si vous avez besoin d'un tri: tri sur le niveau de l'application.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X