Site de référence: [Introduction à Python] Comment obtenir des données avec la fonction listdir
Python vous permet de lire un fichier spécifique et d'obtenir les données. Vous pouvez taper directement le nom du fichier, mais il y a des moments où vous devez obtenir une liste de fichiers et sélectionner un fichier dans votre programme. Dans ce cas, vous pouvez facilement obtenir une liste de répertoires (dossiers) et de fichiers en utilisant la fonction listdir.
Cette fois, j'expliquerai comment obtenir le répertoire et la liste des fichiers et le chemin en utilisant la fonction listdir.
table des matières 1 [Obtenez une liste de répertoires et de fichiers avec la fonction listdir](Obtenez une liste de répertoires et de fichiers avec la fonction ## listdir) 2 [Obtenez uniquement ce dont vous avez besoin en combinaison avec la fonction lisdir](## Obtenez uniquement ce dont vous avez besoin en combinaison avec la fonction lisdir) 3 [Get file with glob function](## Get file with glob function)
Utilisez la fonction listdir pour obtenir une liste de répertoires et de fichiers en Python. La syntaxe de la fonction listdir est la suivante.
import os #Doit être requis
Variable de liste= os.listdir('chemin')
La fonction istdir est une fonction du module nommé os, assurez-vous donc de l'importer lorsque vous utilisez la fonction listdir. En passant le chemin du répertoire et le répertoire pour lequel vous souhaitez obtenir la liste de fichiers à l'argument de listdir, vous pouvez récupérer la liste des répertoires et des fichiers de ce répertoire.
import os
directory = os.listdir('C:\Python35')
print(directory)
Résultat d'exécution
[‘Lib’, ‘python.exe’, ‘Readme.txt’, ‘Scripts’, ‘tcl’, ‘test.txt’] Obtenez uniquement ce dont vous avez besoin en combinaison avec la fonction lisdir
La fonction listdir obtiendra une liste de tous les dossiers et fichiers dans le chemin spécifié. Cependant, dans certains cas, vous ne voudrez peut-être que des répertoires ou vice versa. Dans un tel cas, il peut être réalisé en utilisant isdir qui peut vérifier si le chemin spécifié pointe vers un répertoire ou un fichier. La syntaxe d'isdir est la suivante.
os.path.isdir('chemin')
isdir renvoie True si le chemin passé dans l'argument est un répertoire, False sinon. Vous pouvez l'utiliser avec listdir pour obtenir une liste de répertoires ou de fichiers uniquement.
import os
path = 'C:\Python35\\' #Répertoire pour lequel vous souhaitez obtenir une liste de répertoires
files = []
for x in os.listdir(path):
if os.path.isdir(path + x): #Ajoutez les objets extraits au chemin pour créer le chemin complet
files.append(x)
print(files)
Résultat d'exécution
[‘Lib’, ‘Scripts’, ‘tcl’]
Tout d'abord, obtenez une liste de répertoires et de fichiers avec listdir, et récupérez-les un par un avec une instruction for. Vous pouvez créer le chemin du répertoire ou du fichier en concaténant le nom du répertoire extrait ou le nom du fichier après le chemin d'origine.
Passez ce chemin à isdir et vous saurez s'il s'agit d'un répertoire ou d'un fichier. Dans ce cas, j'essaie de n'ajouter que ceux dont isdir renvoie True, c'est-à-dire les répertoires à la liste. En refusant cette instruction if, vous ne pouvez récupérer que l'instruction file.
Si vous utilisez isfile au lieu de isdir, vous ne pouvez récupérer que le fichier.
import os
path = 'C:\Python35\\'
files = []
for x in os.listdir(path):
if os.path.isfile(path + x): #utilisez isfile au lieu de isdir
files.append(x)
print(files)
Résultat d'exécution
[‘python.exe’, ‘Readme.txt’, ‘test.txt’]
Vous pouvez maintenant obtenir une liste de répertoires et de fichiers en utilisant listdir, isdir et isfile. Cependant, il arrive que vous souhaitiez obtenir le fichier avec plus de détails. Par exemple, si vous souhaitez extraire un fichier avec uniquement l'extension .txt, vous devez manipuler la chaîne après l'avoir extraite.
import os
path = 'C:\Python35\\'
files = []
texts = []
for x in os.listdir(path):
if os.path.isfile(path + x):
files.append(x)
for y in files:
if(y[-4:] == '.txt'): #Extrayez les 4 derniers caractères du nom de fichier et c'est.Si txt
texts.append(y) #Ajouter à la liste
print(texts)
Résultat d'exécution
[‘Readme.txt’, ‘test.txt’]
Cependant, cette méthode complique le code et la longueur varie en fonction de l'extension, il est donc difficile de la définir à chaque fois. Dans de tels cas, il est rafraîchissant d'utiliser la fonction glob au lieu de listdir. La syntaxe de glob est la suivante.
import os
path = 'C:\Python35\\'
files = []
texts = []
for x in os.listdir(path):
if os.path.isfile(path + x):
files.append(x)
for y in files:
if(y[-4:] == '.txt'): #Extrayez les 4 derniers caractères du nom de fichier et c'est.Si txt
texts.append(y) #Ajouter à la liste
print(texts)
La fonction glob est une fonction du module glob, assurez-vous donc d'importer glob. La fonction glob transmet également le chemin comme argument, mais contrairement à listdir, vous pouvez saisir non seulement un nom de répertoire unique, mais également un nom de fichier unique. De plus, des caractères génériques (*) et des expressions régulières qui signifient des chaînes de caractères arbitraires peuvent être utilisés dans l'argument glob, de sorte que vous ne pouvez facilement obtenir qu'un fichier spécifique.
import glob
path = 'C:\Python35\\*.txt'
files = []
files = glob.glob(path)
print(files)
Résultat d'exécution
[‘C:\Python35\Readme.txt’, ‘C:\Python35\test.txt’]
Dans cet exemple, "* .txt" est spécifié pour le chemin, donc seuls les fichiers avec l'extension .txt sont extraits. Si vous utilisez la fonction glob, vous pouvez obtenir le fichier dans n'importe quel modèle en concevant la méthode de spécification de chemin.
Recommended Posts