> Modules standards > Modules pour les fichiers > shutil pour les opérations sur les fichiers
shutil pour les opérations sur les fichiers
Faire import shutil
Recopie de fichiers :
- shutil.copyfile('myFile', 'myFile2') : copie du fichier myFile en fichier myFile2 (les chemins peuvent être absolus ou relatifs).
- fh1 = open('myFile'); fh2 = open('myFile2', 'w'); shutil.copyfileobj(fh1, fh2); fh1.close(); fh2.close() : autre possibilité pour recopier un fichier à partir des filehandles.
- shutil.copy('myFile', 'myFile2') : comme shutil.copyfile.
- shutil.copy('myFile', 'myDir') : contrairement à copyfile, permet de copier un fichier dans un directory (dossier).
- shutil.copy2('myFile', 'myFile2') : comme shutil.copy, mais en plus recopie les permissions et les dates de dernier accès et de modification (similaire à la commande linux "cp -p").
Recopie des métadonnées sur les fichiers :
- shutil.copymode('myFile', 'myFile2') : recopie les permissions présentes sur le fichier myFile vers le fichier myFile2, mais sans affecter le contenu.
- shutil.copystat('myFile', 'myFile2') : recopie à la fois les permissions et les dates de dernier accès et dernière modification présentes sur le fichier myFile vers le fichier myFile2, mais sans affecter le contenu.
Manipulation d'arborescences :
- shutil.move('myDir', 'myDir2') : renomme un directory myDir en myDir2 si myDir2 n'existe pas. Si myDir2 est un directory qui existe, déplace myDir dans myDir2.
- shutil.copytree('myDir', '/myDir1/myDir2') : recopie un directory myDir vers un autre directory myDir2 qui n'existe pas : myDir2 sera crée et son contenu sera identique à celui de myDir. Attention, les liens symboliques sont remplacés dans l'arborescence crée par le contenu qu'ils pointent (et si ils pointent dans le vide, une exception shutil.Error est levée).
- shutil.copytree('myDir', '/myDir1/myDir2', symlinks = True) : les liens symboliques sont recopiés comme liens symboliques (même s'ils ne pointent vers rien).
- shutil.copytree('myDir', 'myDir2', ignore = shutil.ignore_patterns('*.txt', '*.csv')) : recopie myDir en myDir2, en ignorant tous les fichiers qui se terminent par .txt ou par .csv (en fait, shutil.ignore_patterns renvoie une fonction qui prend en argument un directory et une liste de fichiers et renvoie le set de fichier matchant l'un des patterns et cet output est utilisé par shutil.copytree pour les ignorer.
- shutil.rmtree('myDir') : détruit un directory et toute son arborescence.
Création d'archives :
- shutil.make_archive('myDir', 'zip', '.', 'myDir') : création d'une archive myDir.zip :
- le premier argument est le nom de l'archive, sans l'extension.
- le 2ème argument est le type d'archive.
- le 3ème argument est le directory racine de l'archive : on fait un chdir à cet endroit avant de créer l'archive (si on avait mis myDir, le .zip contiendrait le contenu sans le niveau myDir, pas terrible !).
- le 4ème argument est le directory à archiver.
- formats d'archives possibles :
- 'zip' : pour les zip.
- 'tar' : pour les tar.
- 'gztar' : pour les tar.gz.
- 'bztar' : pour les tar.bz2.
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert