glob
est un terme général utilisé pour définir des techniques permettant de faire correspondre des modèles spécifiés selon des règles liées au shell Unix. Les systèmes et shells Linux et Unix prennent également en charge glob et fournissent également la fonction glob() dans les bibliothèques système. Dans ce tutoriel, nous allons examiner l’utilisation de la fonction glob()
en langage de programmation Python.
Pour utiliser glob()
et les fonctions associées, nous devons importer le module glob
. Gardez à l’esprit que le module glob
contient glob()
et d’autres fonctions connexes.
import glob
Recherche de chaîne exacte
Nous allons commencer par un exemple simple. Nous verrons comment faire correspondre la chaîne exacte ou le nom de fichier avec un chemin absolu. Dans cet exemple, nous listerons le fichier /home/ismail/poftut.c
. Nous pouvons voir l’exemple ci-dessous que la fonction renvoie une liste qui contient des correspondances.
glob.glob("/home/ismail/poftut.c")
Wildcards
Le caractère générique est un opérateur glob important pour les opérations glob. Le caractère générique ou l’astérisque est utilisé pour faire correspondre zéro caractère ou plus. Le caractère générique spécifie qu’il peut y avoir zéro caractère ou plusieurs caractères lorsque le caractère n’est pas important. Dans cet exemple, nous allons faire correspondre les fichiers qui ont l’extension .txt
.
glob.glob("/home/ismail/*.txt")
Comme nous pouvons le voir qu’il y a beaucoup de fichiers .txt
qui retournent dans une liste Python.
Caractères génériques avec des répertoires multiniveaux
Nous pouvons utiliser des caractères génériques afin de spécifier des répertoires multiniveaux. Si nous voulons rechercher des répertoires d’un niveau vers le bas pour le glob spécifié, nous utiliserons /*/
. Dans cet exemple, nous recherchons des fichiers .txt
dans des répertoires de niveau inférieur dans /home/ismail
. Ceci est également appelé « glob glob » car nous utilisons le nom de module glob et la fonction glob qui est fournie par le module glob.
glob.glob("/home/ismail/*/*.txt")
Caractère générique
Il y a un point d’interrogation qui est utilisé pour faire correspondre un seul caractère. Cela peut être utile si nous ne connaissons pas de caractère unique pour le prénom. Dans cet exemple, nous allons faire correspondre les fichiers avec le fichier files file?.txt
où ceux-ci correspondront au fichier
- .fichier txt
- 1.fichier txt
- 5.txt
- …
glob.glob("/home/ismail/file?.txt")
Plusieurs caractères
Glob prend également en charge les caractères alphabétiques et numériques. Nous pouvons utiliser pour terminer la plage de caractères. Nous pouvons mettre ce que nous voulons faire correspondre entre crochets. Dans cet exemple, nous allons faire correspondre les noms de fichiers et de dossiers à ceux de
e,m,p
.
glob.glob("/home/ismail/*.tx?")
Plages de nombres
Dans certains cas, nous pouvons vouloir faire correspondre la plage de nombres. Nous pouvons utiliser le tiret -
pour spécifier les numéros de début et de fin. Dans cet exemple, nous allons faire correspondre 0 à 9 avec 0-9
. Dans cet exemple, nous allons faire correspondre les noms de fichiers et de dossiers contenant des nombres de 0 à 9.
glob.glob("/home/ismail/**")
Plages d’alphabet
Nous pouvons également définir des plages d’alphabet similaires aux plages de nombres. nous utiliserons a-z
pour les caractères minuscules où A-Z pour les caractères majuscules. Que faire si nous devons faire correspondre les caractères minuscules et majuscules dans une seule instruction. Nous pouvons utiliser a-Z pour faire correspondre les lettres minuscules et majuscules. Dans cet exemple, nous allons faire correspondre les noms de fichiers et de dossiers qui commencent par des lettres entre a
et c
glob.glob("/home/ismail/*")
Générateur de retour avec iglob()Mehtod
Généralement la méthode glob est utilisée pour lister les fichiers pour les modèles spécifiés. Mais dans certains cas, les répertorier et les stocker peuvent être un travail fastidieux. Ainsi, la fonction iglob()
peut être utilisée pour créer un itérateur qui peut être utilisé pour itérer les noms de fichiers avec la fonction next()
.
import glob
gen = glob.iglob("*.txt")
for item in gen:
print(item)
Ignorer des caractères spécifiques avec la méthode escape()
escape()
la fonction peut être utilisée pour ignorer ou ne pas répertorier certains fichiers dont les noms spécifient des caractères. Par exemple, si nous voulons ignorer les fichiers que ces noms contiennent -
ou _
ou #
, nous pouvons utiliser la fonction escape() en fournissant ces caractères.
chars_skip = "-_#"
for char_skip in chars_skip:
esc_set = "*" + glob.escape(char_skip)+ "*" + ".txt"
for txt in (glob.glob(esc_set)):
print(txt)