En Python, je veux uniquement répertorier tous les fichiers du répertoire actuel. Je ne veux pas que les fichiers soient répertoriés dans un sous-répertoire ou un parent.
Il semble y avoir des solutions similaires, mais elles ne semblent pas fonctionner pour moi. Voici mon extrait de code:
import os
for subdir, dirs, files in os.walk('./'):
for file in files:
do some stuff
print file
Supposons que j'ai 2 fichiers, holygrail.py et Tim dans mon répertoire actuel. J'ai également un dossier et il contient deux fichiers - appelons-les Arthur et Lancelot - à l'intérieur. Lorsque j'exécute le script, voici ce que j'obtiens:
holygrail.py
Tim
Arthur
Lancelot
Je suis content avec holygrail.py et Tim. Mais les deux fichiers, Arthur et Lancelot, je ne veux pas les lister.
[os.path.join(path_base,f) for f in os.listdir(path_base) if os.path.isfile(os.path.join(path_base,f))]
files = [f for f in os.listdir("/somedir") if os.path.isfile(os.path.join("/somedir", f))]'
Vous pouvez utiliser
os.listdir
à cette fin. Si vous souhaitez uniquement des fichiers et non des répertoires , vous pouvez filtrer les résultats à l'aide deos.path.isfile
.exemple:
ou
la source
la source
Vous pouvez utiliser
os.scandir()
. La nouvelle fonction dans stdlib démarre à partir de Python 3.5.Plus rapide que
os.listdir()
.os.walk()
met en œuvreos.scandir()
.la source
cela peut être fait avec os.walk ()
python 3.5.2 testé;
supprimez la ligne dirs.clear () et les fichiers des sous-dossiers sont à nouveau inclus.
mise à jour avec références ;
os.walk est documenté ici et parle de la triple liste en cours de création et des effets topdown.
.clear () documenté ici pour vider une liste
ainsi, en effaçant la liste pertinente d'os.walk, vous pouvez affecter son résultat à vos besoins.
la source
Vous pouvez améliorer ce code
del dirs[:]
qui sera comme suit.Ou encore mieux si vous pouviez pointer os.walk avec le répertoire de travail actuel.
la source
au lieu de
os.walk
, utilisez simplementos.listdir
la source
Vous pouvez utiliser le module pathlib.
la source