8
votes

Comment trier les fichiers dans un répertoire avant de lire?

Je travaille avec un programme qui écrit la sortie dans un fichier CSV basé sur la commande que les fichiers sont lus dans un répertoire. Toutefois, avec un grand nombre de dossiers avec les fins de 1,2,3,4,5,6,7,8,9,10,11,12. Mon programme lit en fait les fichiers par je suppose l'ordre alphabétique: 1,10,11,12 ...., 2,20,21 ..... 99. Le problème est qu'un autre programme suppose que la commande est en ordre numérique et oblige les résultats du graphique.

Le fichier en fait ressemble à: string.ext.ext2.1.txt, string.ext.ext2.2.txt , et ainsi de suite ...

Comment puis-je faire cela avec un script Python?


0 commentaires

4 Réponses :


5
votes

Trier votre liste de fichiers dans le programme. Ne comptez pas sur les appels de système d'exploitation pour donner aux fichiers dans le bon ordre, cela dépend du système de fichiers réel utilisé.


0 commentaires

15
votes
files = ['String.ext.ext2.1.txt', 'String.ext.ext2.12.txt', 'String.ext.ext2.2.txt']
# files: coming from os.listdir() sorted alphabetically, thus not numerically

sorted_files = sorted(files, key=lambda x: int(x.split('.')[3]))
# returns: ['String.ext.ext2.1.txt', 'String.ext.ext2.2.txt', 'String.ext.ext2.12.txt']

2 commentaires

trié_files = trié (fichiers, touche = lambda x: int (x.split ('.') [3])) Le Les fonctions de tri Télyse le premier argument à l'aide d'un sélecteur donné par le deuxième argument. Pensez à trier une table par une certaine colonne. Maintenant, pour le deuxième argument. C'est une fonction de transformation de votre nom de fichier dans une liste de pièces (séparées par . ) et de prendre le 3ème élément dans cette liste


A eu pour fonctionner avec ceci: trié_files = trié (fichier_list, touche = lambda x: int (x.split ('.') [3]) Si (x.endswith ("TXT")).



1
votes

Vous pouvez utiliser quelque chose comme ceci: xxx


0 commentaires

5
votes
  1. Utilisez os.listdir pour obtenir une liste de noms de fichiers.
  2. Trier la liste à l'aide de Trier naturel Commandez .
  3. Processez les fichiers dans l'ordre de votre liste de tri.

0 commentaires