est-il possible de voir des fichiers avec certaines extensions avec la commande OS.ListDir? Je veux que cela fonctionne de sorte qu'il puisse montrer uniquement des fichiers ou des dossiers avec .f à la fin. J'ai vérifié la documentation et je n'ai rien trouvé, alors ne demandez pas. P>
5 Réponses :
Ne demandez pas quoi? Si vous souhaitez vérifier une liste des extensions, vous pouvez faire la généralisation évidente, P> [s for s in os.listdir() if s.rpartition('.')[2] in ('f','c','z')]
Il y a beaucoup de choses qui sont des appels de fonction explicite dans d'autres langues remplacées par des opérations intégrées à Python. C'est difficile de garder la piste parfois. Par exemple, les différents modèles d'adaptateur dans la bibliothèque standard C ++ sont tout simplement Lambda Code> en Python. C'est l'une de mes choses préférées sur Python.
"Ne demandez pas" signifie "Ne me demandez pas," Avez-vous vérifié la documentation, qu'est-ce que cela a dit? '"
@Ned: Je pensais en quelque sorte que c'était une question à moitié rhétorique.
[S dans os.listdir () si S.endswith ('. F')] code> entraîne une erreur de syntaxe ici à l'aide de Python 2.7.
[s pour s dans os.listdir ('.') si S.endswith ('. F')] code> travaux
Je me demandais juste ce que "s" est censé être ici? J'ai essayé le code pour moi-même et cela fonctionne, mais j'ai du mal à comprendre lorsque des noms de variables apparemment arbitraires sont utilisés.
@ Q-Compute C'est juste une variable qui est définie sur le nom de chaque fichier dans le répertoire à son tour. Le nom est arbitraire afin que vous puissiez l'écrire pour vous-même avec un nom de variable différent si cela vous facilite la compréhension.
glob code>
est bon à ceci:
import glob for f in glob.glob("*.f"): print(f)
+1 wow, cela a beaucoup aidé! Mais ne pouvons-nous pas simplement imprimer (glob.glob ("*. Py"))?
Vous pouvez le faire, glob.glob renvoie une liste, faites ce que vous voulez avec elle.
[s for s in os.listdir() if os.path.splitext(s) == 'f']
Cela devrait être OS.Path.splitext (s) [1] == '.f' code>.
Il y a une autre possibilité non mentionnée jusqu'à présent: en réalité, c'est la manière dont le module glob code> est mis en oeuvre, donc dans ce cas
glob code> est plus simple et meilleur, mais le module
fnmatch code> peut être pratique dans d'autres situations, par exemple Lors d'une traversée d'arbre à l'aide de
os.walk code>. p> p>
Essayez ceci:
from os import listdir extension = '.wantedExtension' mypath = r'my\path' filesWithExtension = [ f for f in listdir(mypath) if f[(len(f) - len(extension)):len(f)].find(extension)>=0 ]