112 votes

Python Glob sans le chemin complet - seulement le nom du fichier

Existe-t-il un moyen d'utiliser glob sur un répertoire, pour obtenir les fichiers avec une extension spécifique, mais seulement le nom de fichier lui-même, et non le chemin complet ?

168voto

Tom Zych Points 5577

Utilisez os.path.basename(path) pour obtenir le nom du fichier.

0 votes

Ce n'est cependant pas exactement la même chose que le Glob relatif. Imaginons que le motif soit "sql/*.sql" . El os.listdir listerait en fait les chemins de fichiers relatifs au répertoire donné, bien qu'elle ne fonctionne pas avec les modèles. EDIT : Ah, je cherchais cette réponse : stackoverflow.com/a/44994860/1317713 L'astuce consiste à utiliser os.path.relpath plutôt que basename .

150voto

Cela pourrait aider quelqu'un :

names = [os.path.basename(x) for x in glob.glob('/your_path')]

0 votes

Ils peuvent aussi utiliser os.path.relpath au lieu de os.path.basename s'ils veulent un chemin relatif vers '/your_path' plutôt que le nom du fichier.

14voto

nightcracker Points 34498

Utilisez glob en combinaison avec os.path.basename .

14voto

Víctor Navarro Points 392
map(os.path.basename, glob.glob("your/path"))

Renvoie un itérable avec tous les noms de fichiers et extensions.

3voto

rinkush sharda Points 71

Os.path.basename fonctionne pour moi.

Voici un exemple de code :

import sys,glob
import os

expectedDir = sys.argv[1]                                                    ## User input for directory where files to search

for fileName_relative in glob.glob(expectedDir+"**/*.txt",recursive=True):       ## first get full file name with directores using for loop

    print("Full file name with directories: ", fileName_relative)

    fileName_absolute = os.path.basename(fileName_relative)                 ## Now get the file name with os.path.basename

    print("Only file name: ", fileName_absolute)

Sortie :

Full file name with directories:  C:\Users\erinksh\PycharmProjects\EMM_Test2\venv\Lib\site-packages\wheel-0.33.6.dist-info\top_level.txt
Only file name:  top_level.txt

0 votes

Vous avez confondu vos noms de variables : absolu signifie le chemin complet ; relatif signifie seulement le nom de base.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X