Io corro Python 2.5 (R25: 51908, 19 Settembre, 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] sulla vittoria 32Python ordina "u11-Phrase 1000.wav" prima di "u11-Phrase 101.wav"; come posso superare questo?
Quando mi sto chiedendo Python
>>> "u11-Phrase 099.wav" < "u11-Phrase 1000.wav"
True
Va bene. Quando chiedo
>>> "u11-Phrase 100.wav" < "u11-Phrase 1000.wav"
True
Anche questo va bene. Ma quando chiedo
>>> "u11-Phrase 101.wav" < "u11-Phrase 1000.wav"
False
Quindi, secondo Python "U11-Frase 100.wav" viene prima "U11-Frase 1000.wav", ma "U11-Frase 101.wav" viene dopo "U11-Frase 1000 wav "! E questo per me è problematico perché sto provando a scrivere un programma di ridenominazione di file e questo tipo di ordinamento interrompe la funzionalità.
Cosa posso fare per superare questo? Devo scrivere la mia funzione cmp e testare i casi limite o c'è una scorciatoia molto più semplice per darmi l'ordine che voglio?
D'altra parte se modifico le corde, come
>>> "u11-Phrase 0101.wav" < "u11-Phrase 1000.wav"
True
Tuttavia quelle stringhe provengono da l'elenco dei file della directory, ad esempio:
files = glob.glob('*.wav')
files.sort()
for file in files:
...
Quindi preferirei non lo faccio chirurgica operazioni sulle stringhe dopo che sono state create da glob. E no, non voglio cambiare i nomi dei file originali anche in quella cartella.
Eventuali suggerimenti?
Chiamato anche ordinamento naturale: http://www.codinghorror.com/blog/archives/001018.html –
+1. Cool link, stavo per rispondere alla domanda. Non c'è bisogno di questo ora. – Boldewyn