FAQ PythonConsultez toutes les FAQ

Nombre d'auteurs : 11, nombre de questions : 188, dernière mise à jour : 2 septembre 2018 

 
OuvrirSommaireGestion Fichier/RépertoireFichier

os.listdir(path) renvoie une liste contenant les noms de tous les fichiers et répertoires de path

 
Sélectionnez

>>> import os
>>> os.listdir('c:/python24')
['DLLs', 'Doc', 'include', 'kinterbasdb-wininst.log', 'Lib', 'libs', 'LICENSE.txt', 'matplotlib-wininst.log', 
'msvcp71.dll', 'msvcr71.dll', 'MySQL-python.exe-wininst.log', 'NEWS.txt', 'numarray-wininst.log', 
'Numeric-wininst.log', 'PIL-wininst.log', 'psycopg-wininst.log', 'py.ico', 'pyc.ico', 'python.exe', 
'python.exe.manifest', 'pythonw.exe', 'pythonw.exe.manifest', 'pywin32-wininst.log', 'README.txt', 
'Removekinterbasdb.exe', 'Removematplotlib.exe', 'RemoveMySQL-python.exe.exe', 'Removenumarray.exe', 
'RemoveNumeric.exe', 'RemovePIL.exe', 'Removepsycopg.exe', 'Removepywin32.exe', 'Scripts', 'share', 'tcl', 
'Tools', 'w9xpopen.exe']

On peut également utiliser la fonction glob.glob(path) qui renvoie une liste contenant le chemin complet des fichiers ou répertoire contenu dans path

 
Sélectionnez

>>> import glob
>>> glob.glob('c:/python24/*')
['c:\\python24\\boa-constructor-wininst.log', 'c:\\python24\\DLLs', 'c:\\python24\\Doc', 
'c:\\python24\\egenix-mx-base-wininst.log', 'c:\\python24\\include', 'c:\\python24\\kinterbasdb-wininst.log', 
'c:\\python24\\Lib', 'c:\\python24\\libs', 'c:\\python24\\LICENSE.txt', 'c:\\python24\\matplotlib-wininst.log', 
'c:\\python24\\msvcp71.dll', 'c:\\python24\\msvcr71.dll', 'c:\\python24\\MySQL-python.exe-wininst.log', 
'c:\\python24\\NEWS.txt', 'c:\\python24\\numarray-wininst.log', 'c:\\python24\\PIL-wininst.log', 
'c:\\python24\\psycopg2-wininst.log', 'c:\\python24\\py.ico', 'c:\\python24\\py2exe-wininst.log', 
'c:\\python24\\pyc.ico', 'c:\\python24\\python.exe', 'c:\\python24\\python.exe.manifest', 'c:\\python24\\pythonw.exe', 
'c:\\python24\\pythonw.exe.manifest', 'c:\\python24\\README.txt', 'c:\\python24\\Removeboa-constructor.exe', 
'c:\\python24\\Removeegenix-mx-base.exe', 'c:\\python24\\Removekinterbasdb.exe', 'c:\\python24\\Removematplotlib.exe', 
'c:\\python24\\RemoveMySQL-python.exe.exe', 'c:\\python24\\Removenumarray.exe', 'c:\\python24\\RemovePIL.exe', 
'c:\\python24\\Removepsycopg2.exe', 'c:\\python24\\Removepy2exe.exe', 'c:\\python24\\Scripts', 'c:\\python24\\share', 
'c:\\python24\\tcl', 'c:\\python24\\Tools', 'c:\\python24\\unins000.dat', 'c:\\python24\\unins000.exe', 
'c:\\python24\\w9xpopen.exe']
Mis à jour le 8 juin 2005  par Guigui_

Voici 2 façons de faire. Chacune des fonctions retournera la liste des fichiers (avec chemin complet) contenus dans un répertoire ou dans un de ses sous-répertoires.

La première méthode utilise la fonction glob.glob(path) qui va lister le contenu d'un répertoire avec appel récursif aux sous-répertoires

Lister l'aborescence d'un répertoire grâce à la fonction glob.glob(path)
Sélectionnez
import glob 
import os.path 

def listdirectory(path): 
    fichier=[] 
    l = glob.glob(path+'\\*') 
    for i in l: 
        if os.path.isdir(i): fichier.extend(listdirectory(i)) 
        else: fichier.append(i) 
    return fichier

La fonction os.walk(path) crée un générateur de triplets (root, dirs, files) dans l'arborescence de path. Un triplet est généré par répertoire visité. root représente le chemin d'accès du répertoire visité. dirs est la liste des sous-répertoires du répertoire root et files est la liste des fichiers du répertoire root.

Lister l'aborescence d'un répertoire grâce à la fonction os.walk(path)
Sélectionnez
import os.path

def listdirectory2(path): 
    fichier=[] 
    for root, dirs, files in os.walk(path): 
        for i in files: 
            fichier.append(os.path.join(root, i)) 
    return fichier

On peut en profiter pour tester la rapidité des 2 fonctions.

Utilisation des fonctions
Sélectionnez

import time

def compare(path):
    a = time.clock()
    listdirectory(path)
    b = time.clock()
    listdirectory2(path)
    c = time.clock()
    return b-a, c-b

>>>print compare('c:/python24')
(1.0782314512039937, 1.0392410208560028) ## les 2 fonctions se valent...
Créé le 18 août 2005  par Guigui_

os.path.isfile(path) renvoie True si path désigne un fichier existant

Mis à jour le 8 juin 2005  par Guigui_

os.path.getsize(path) renvoie la taille du fichier path

Mis à jour le 8 juin 2005  par Guigui_

Pour supprimer un fichier, il suffit d'utiliser la fonction os.remove(path) où path réprésente le chemin d'accès au fichier.

Créé le 25 juillet 2006  par Guigui_

os.rename(src, dst) permet de renommer le fichier de chemin src en le fichier de chemin dst, le répertoire contenant le fichier de destination doit cependant déjà exister, une erreur étant sinon retournée.
os.renames(src, dst) permet de renommer le fichier src en dst tout en créant si nécessaire les répertoires contenant le fichier de destination.
Enfin shutil.move(src, dst) renomme exactement comme os.renames le fichier src en dst si le fichier de destination est sur le même système de fichiers. Autrement elle copie simplement src sur dst puis efface src

Si le fichier de destination se trouve sur le même système de fichiers, vous pouvez utiliser aussi bien les fonctions os.rename, os.renames que shutil.move sinon préférez shutil.move, les 2 autres fonctions pouvant échouer à leur tâche.

Créé le 4 mars 2007  par Guigui_

Lien : Comment renommer/déplacer un répertoire ?
Lien : Python Library Reference: Files and Directories
Lien : Python Library Reference: shutil -- High-level file operations

Le module os.path propose plusieurs fonctions simples d'utilisation pour récupérer les parties d'un nom de fichier:

Fonctions pour récupérer des les différentes parties d'un nom de fichier
  • dirname(path): retourne le répertoire associé au path
  • basename(path): retourne le nom simple du fichier (extension comprise)
  • split(path): retourne le couple (répertoire, nom du fichier)
  • splitdrive(path): retourne le couple (lecteur, chemin du fichier sans le lecteur)
  • splitext(path): retourne le couple (chemin du fichier sans l'extension, extension)
  • splitunc(path): retourne le couple (unc, rest) où unc est du type \\host\répertoire partagé et rest le reste du path (cette fonction n'est valable que sous Windows)
 
Sélectionnez

>>> import os.path
>>> os.path.dirname('c:\\python24\\python.exe')
'c:\\python24'
>>> os.path.basename('c:\\python24\\python.exe')
'python.exe'
>>> os.path.split('c:\\python24\\python.exe')
('c:\\python24', 'python.exe')
>>> os.path.splitdrive('c:\\python24\\python.exe')
('c:', '\\python24\\python.exe')
>>> os.path.splitext('c:\\python24\\python.exe')
('c:\\python24\\python', '.exe')
>>> os.path.splitunc(r'\\host\python24\lib\ftplib.py')
('\\\\host\\python24', '\\lib\\ftplib.py')
Créé le 7 novembre 2005  par Guigui_
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2005-2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.