web-dev-qa-db-fra.com

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 des fichiers avec une extension spécifique, mais uniquement le nom de fichier lui-même, pas le chemin complet?

50
user825286

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

78
Tom Zych

Cela pourrait aider quelqu'un:

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

70

Utilisez glob en combinaison avec os.path.basename.

11
orlp

Je continue de réécrire la solution pour globbing relatif (surtout quand j'ai besoin d'ajouter des éléments à un fichier zip) - c'est à quoi cela ressemble généralement.

# Function
def rel_glob(pattern, rel):
    """glob.glob but with relative path
    """
    for v in glob.glob(os.path.join(rel, pattern)):
        yield v[len(rel):].lstrip("/")

# Use
# For example, when you have files like: 'dir1/dir2/*.py'
for p in rel_glob("dir2/*.py", "dir1"):
    # do work
    pass
0
turtlemonvh