estoy corriendo Python 2.5 (R25: 51908 19 Sep 2006, 09:52:17) [32 bits MSC v.1310 (Intel)] en Win 32Python ordena "u11-Phrase 1000.wav" antes de "u11-Phrase 101.wav"; ¿Cómo puedo superar esto?
Cuando estoy pidiendo Python
>>> "u11-Phrase 099.wav" < "u11-Phrase 1000.wav"
True
Eso está bien. Cuando pregunto
>>> "u11-Phrase 100.wav" < "u11-Phrase 1000.wav"
True
Eso está bien, también. Pero cuando pido
>>> "u11-Phrase 101.wav" < "u11-Phrase 1000.wav"
False
Así que de acuerdo Python "100.wav U11-frase" viene antes de "1000.wav U11-frase" pero "101.wav U11-frase" viene después "U11-Frase 1000 .wav "! Y esto es problemático para mí porque estoy tratando de escribir un programa de cambio de nombre de archivo y este tipo de clasificación rompe la funcionalidad.
¿Qué puedo hacer para superar esto? ¿Debo escribir mi propia función de cmp y probar las cajas de borde o hay un atajo mucho más simple para darme el orden que quiero?
Por otro lado, si modifico las cadenas como
>>> "u11-Phrase 0101.wav" < "u11-Phrase 1000.wav"
True
Sin embargo esas cadenas vienen de la lista de archivos del directorio como:
files = glob.glob('*.wav')
files.sort()
for file in files:
...
Así que prefiero no hacer quirúrgica operaciones en las cadenas después de que hayan sido creadas por glob. Y no, no quiero cambiar los nombres de archivo originales en esa carpeta, también.
¿Alguna pista?
También llamado clasificación natural: http://www.codinghorror.com/blog/archives/001018.html –
+1. Cool link, estaba a punto de responder la pregunta. No es necesario para esto ahora. – Boldewyn