| CodeSystemeDeFichier |
UserPreferences |
| Wiki Python Fr | FrontPage | RecentChanges | TitleIndex | WordIndex | SiteNavigation | HelpContents | moin.sf.net |
1 2 3 4 5 6 | import os
depuis="c:\windows"
for file in os.listdir(depuis):
chemin = os.path.join(depuis,file)
if os.path.isfile(chemin):
print chemin |
Lister tous les fichiers EXE du répertoire c:\windows:
1 2 3 | import glob
for nomfichier in glob.glob(r'c:\windows\*.exe'):
print nomfichier |
Par exemple, voici un petit programme qui se balade dans les sous-répertoire de votre disque dur et affiche les noms des fichiers:
1 2 3 4 5 6 7 8 | import os.path, string
def listRep ( args, dirname, filenames ):
print 'Dossier',dirname
for filename in filenames:
print ' Fichier',filename
os.path.walk('c:\\', listRep, None ) |
La fonction listRep est appelée automatiquement pour chaque répertoire rencontré. dirname contient le chemin complet du répertoire. filenames est une liste de fichiers contenus dans ce répertoire.
Facile ensuite de faire ce qu'on veut sur chacun des fichiers.
Le plus chouette, c'est que ça fonctionne sous Windows, Dos, Unix, Macintosh et tous les systèmes sur lequel Python existe, sans modification.
Pas besoin de développer des fonctions particulières pour chaque OS. Pas besoin non plus de différencier le séparateur de répertoire (\ sous Windows, / sous Unix, : sur Macintosh...).
1 2 3 4 5 6 7 8 9 10 11 | import os, os.path
debut = "c:\\"
repertoires = [debut]
while len(repertoires)>0:
repertoire = repertoires.pop()
for nom in os.listdir(repertoire):
chemin = os.path.join(repertoire,nom)
if os.path.isfile(chemin):
faireQuelquechoseAvecLeFichier(chemin) # C'est un fichier
elif os.path.isdir(chemin):
repertoires.append(chemin) # C'est un répertoire |
Il vous suffit de remplacer faireQuelquechoseAvecLeFichier(chemin) par ce que vous voulez.
Pour zipper le fichier programme.py dans monarchive.zip:
1 2 3 4 | import zipfile
f = zipfile.ZipFile('monarchive.zip','w',zipfile.ZIP_DEFLATED)
f.write('programme.py')
f.close() |
(Ici, on a appelé en mode 'w' pour créer le fichier zip ; pour ajouter des fichiers à un fichier ZIP existant, on aurait utilisé 'a'.)
Et pour dézipper tous les fichiers d'un ZIP:
1 2 3 4 5 6 7 | import zipfile
zfile = zipfile.ZipFile('monarchive.zip','r')
for filename in zfile.namelist():
data = zfile.read(filename)
file = open(filename, 'w+b')
file.write(data)
file.close() |
Depuis Python 2.3, le module bz2 fait partie des librairies standards de Python. C'est un module de compression plus puissant que ZIP. Il est très facile à utiliser.
1 2 3 4 5 6 7 8 9 | import bz2 texte = " *** Vive Python ! *** " * 50 # Texte original comp = bz2.compress(texte) # Texte compressé print "Taille du texte :", len(texte) print "Taille compressé:", len(comp) print "Et on décompresse le texte:" |
Résultat:
Taille du texte : 1150 Taille compressé: 76 Et on décompresse le texte: *** Vive Python ! *** *** Vive Python ! *** *** Vive Python ! *** *** Vive P ython ! *** *** Vive Python ! *** *** Vive Python ! *** *** Vive Python ! *** *** Vive Python ! *** *** Vive Python ! *** *** Vive Python ! *** *** Vive ...
Vous pouvez également jeter un coup d'oeil sur le module zlib, qui compresse moins bien mais plus vite.
Vous noterez au passage le *50, que Python sait parfaitement interpréter comme "50 fois la chaine".
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # -*- coding: utf8 -*-
import time
import os.path as dir
import os
print "Nettoyage du systeme des fichiers compilé/optimisé python"
basedir = dir.join("""C:\DEV""")
print basedir
print "Demarrage dans 2 secondes"
print "Appuyez sur <CTRL>+<C> pour annuler l'operation"
time.sleep(2)
print "Début du nettoyage ...."
def Clean(args, dirname, filenames):
print "Scan du dossier:%s" % dirname
for filename in filenames:
Fichier = dir.join(dirname,filename)
if(dir.splitext(Fichier)[1] == ".pyc" or dir.splitext(Fichier)[1] == ".pyo"):
print "Suppression de %s" %Fichier
os.remove(Fichier)
dir.walk(basedir, Clean, None )
print "Nettoyage Terminé !" |