Soutenez-nous

FAQ pythonConsultez toutes les FAQ

Nombre d'auteurs : 11, nombre de questions : 188, dernière mise à jour : 23 mai 2009  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions posées sur le forum Python complétées par d'autres questions qui pouvaient nous sembler intéressantes de traiter. Toutefois il se peut que les réponses apportées contiennent des erreurs, imprécisions ... Vous pouvez dans ce cas contacter un des membres de la rédaction pour lui faire part de vos remarques.

L'équipe Python de Developpez.


SommaireGestion Fichier/RépertoireFichier (7)
précédent sommaire suivant
 

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

Code python :



1
2
3
4
5
6
7
8
9
>>> 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

Code python :



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> 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 26 mai 2005 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

Code python :



1
2
3
4
5
6
7
8
9
10
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.

Code python :



1
2
3
4
5
6
7
8
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.

Code python :



1
2
3
4
5
6
7
8
9
10
11
12
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...

Mis à jour le 18 août 2005 Guigui_

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

Mis à jour le 26 mai 2005 Guigui_

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

Mis à jour le 26 mai 2005 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.

Mis à jour le 25 juillet 2006 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.

Mis à jour le 4 mars 2007 Guigui_

Comment renommer/déplacer un répertoire ?
Python Library Reference: Files and Directories
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)

Code python :



1
2
3
4
5
6
7
8
9
10
11
12
13
>>> 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')

Mis à jour le 7 novembre 2005 Guigui_

Proposer une nouvelle question/réponse à la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse

Liens sous la question
précédent sommaire suivant
 

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 © 2014 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.

 
 
 
 
Partenaires

PlanetHoster
Ikoula