Quelle est la meilleure façon de regarder à l'intérieur d'un dossier avec python si vous voulez un nom de fichier et un nom de répertoire mais n'avez pas besoin d'un chemin ...
Par exemple, si le fichier suivant existe dans le répertoire de test
test.csv
test.py
test.sh
test.txt
test1
test2
test3
Si vous utilisez le module glob
, il ressemblera à ceci.
>>> import glob
>>> glob.glob('test/*')
['test/test.csv', 'test/test.py', 'test/test.sh', 'test/test.txt', 'test/test1', 'test/test2', 'test/test3']
Cependant, idéalement
>>> import hoge
>>> hoge.hoge('test/*')
['test.csv', 'test.py', 'test.sh', 'test.txt', 'test1', 'test2', 'test3']
Je veux que ça ressemble à ça.
Il existe les méthodes suivantes, mais il est pénible de ne pas pouvoir spécifier de caractère générique.
>>> import os
>>> os.listdir('test/')
['test.csv', 'test.py', 'test.sh', 'test.txt', 'test1', 'test2', 'test3']
Sur la base de ce qui précède, j'ai proposé les trois La méthode la plus couramment utilisée consiste à utiliser des «commandes».
>>> import commands
>>> commands.getoutput('ls test/* | xargs -n 1 basename').split("\n")
['test.csv', 'test.py', 'test.sh', 'test.txt', 'test1', 'test2', 'test3']
Est-ce une approche simple pour obtenir uniquement le nom de base du chemin obtenu par le module glob
?
>>> import glob
>>> [r.split('/')[-1] for r in glob.glob('test/*')]
['test.csv', 'test.py', 'test.sh', 'test.txt', 'test1', 'test2', 'test3']
>>> import glob, os
>>> [os.path.basename(r) for r in glob.glob('test/*')]
['test.csv', 'test.py', 'test.sh', 'test.txt', 'test1', 'test2', 'test3']
J'étais curieux de savoir comment tout le monde le faisait, alors j'ai écrit ma propre méthode pour le moment. S'il vous plaît, apprenez-moi s'il y a un bon moyen.
Recommended Posts