0
votes

Python fonction Os.listdir ne montre pas tous les fichiers dans le répertoire

Bonjour, j'essaie de charger un couple de fichiers avec os.listdir mais il saute plusieurs fichiers.

Format de fichiers à Directiy est le suivant: xxx

mais le os.listdir ne prend que le fichier 0,1,10,11 .. Fichier avec des chiffres 3,4,5 ... n'est pas dans l'objet de sortie.

et voici ma fonction: xxx

sortie: xxx


4 commentaires

Êtes-vous sûr que vous vérifiez le bon répertoire?


Tronquez-vous une sortie supplémentaire? Il semble que vous obtenez uniquement les premiers fichiers (commandé en raison de la chaîne donc 10 apparaît avant 3)


Outre le point, mais vous pouvez remplacer i [0] == 'f' et i [1] == 'i' et i [2] == 't' avec i. StartSwehith ('Fit') . BTW Bienvenue à tellement! Découvrez le Tour et Comment demander .


Merci pour un accueil chaleureux. Oui Chemin vers le répertoire a raison. Malheureusement, quand il trouve le fichier a_1 il passe à a_10 et le quand il s'agit de la séquence est 19,2,20,21 . C'est vraiment étrange.


3 Réponses :


0
votes

Je serais à peu près sûr que le problème réside dans la fonction self.find_min_fitness (i) . Certaines parties de ce type doivent entraîner une pause du programme après la répertoriement des premiers fichiers.

Les fichiers sont triés par nom par os.listdir () . Il préfère 1 sur 2 lors de la liste des fichiers, c'est pourquoi tous les noms de fichiers commençant par 1 sont répertoriés.

comme solution: peut-être essayer de commenter cette ligne d'une ligne où self.find_min_fitness (i) est appelé et voyez si le problème survient toujours


0 commentaires

0
votes

Cela semble discutable.

00_BlankPage.html
01_DataType.html
02_LinkingExternalJsfile.html
02_Script.js
03_VariableMutation_cohersion.html
04_Operators.html
05_SampleCodeCalculatingBMI.html


0 commentaires

1
votes

Je suppose que les noms de fichiers sont tous là, tout comme dans l'ordre que vous attendez.

Les noms de fichiers sont des chaînes. Ils sont triés selon la logique de tri de chaîne: imaginez le remplacement de chaque 0 avec un A , chaque 1 avec un B , tous les 2 avec un C Et ainsi de suite, et pense maintenant à la façon dont les cordes seraient commandées alphabétiquement. Le tri des chaînes ordinaires ne sait pas que nous aimons écrire des numéros avec le chiffre le moins important à chiffrer dernier . Dans le tri des chaînes ordinaires, ça va vraiment 1 , puis 10 , puis 11 -That 'est analogue à commander les chaînes b , puis BA , puis BB , qui correspond le bon dictionnaire commandant. Il ira longtemps avant qu'il ne reçoit rien de partir avec 3 (analogiquement, les mots du dictionnaire qui commencent par d viennent beaucoup plus tard que tout commençant par < code> B ).

Vous pouvez enquêter sur des algorithmes / forfaits qui font "tri naturel". Ou, la meilleure pratique grandement préférable serait simplement de corriger votre convention de dénomination de fichier pour commencer avec: Assurez-vous que les numéros intégrés à vos noms de fichiers ont tous le même nombre de chiffres, avec des zéros de premier plan si nécessaire ( 001 , 002 , etc.).


1 commentaires

Merci. Tu avais raison. Les fichiers étaient là, mais j'avais mis en œuvre une restriction lorsqu'il est trouvé le dernier fichier avec le numéro 25, puis les sous-routines se termine. Juste à Sure Sortie était 0, 1, 10, 11, 11, ..., 19, 2, 20, 21, ..., 24, 3, 4, ...