Los archivos en el sistema de archivos no están ordenados. Puede ordenar los nombres de los archivos resultantes por sí mismo utilizando la sorted()
function:
for infile in sorted(glob.glob('*.txt')):
print "Current File Being Processed is: " + infile
Tenga en cuenta que la llamada os.path.join
en su código es un no-op; con solo un argumento, no hace nada más que devolver ese argumento inalterado.
Tenga en cuenta que sus archivos ordenarán en orden alfabético, lo que pone 10
antes de 9
. Puede utilizar una función clave personalizada para mejorar la clasificación:
import re
numbers = re.compile(r'(\d+)')
def numericalSort(value):
parts = numbers.split(value)
parts[1::2] = map(int, parts[1::2])
return parts
for infile in sorted(glob.glob('*.txt'), key=numericalSort):
print "Current File Being Processed is: " + infile
La función numericalSort
divide a cabo ningún dígito en un nombre de archivo, lo convierte en un número real, y devuelve el resultado de la clasificación:
>>> files = ['file9.txt', 'file10.txt', 'file11.txt', '32foo9.txt', '32foo10.txt']
>>> sorted(files)
['32foo10.txt', '32foo9.txt', 'file10.txt', 'file11.txt', 'file9.txt']
>>> sorted(files, key=numericalSort)
['32foo9.txt', '32foo10.txt', 'file9.txt', 'file10.txt', 'file11.txt']
HI. La función ordenada no cambia el orden desafortunadamente. – user1620012
@ user1620012: actualicé mi respuesta para mejorar el orden de clasificación. –
hola ... en realidad, mis archivos tienen los siguientes nombres: texto-texto9-texto.txt, texto-texto10-texto.txt etc. – user1620012