File and Directory Access
Modules facilitant le travail sur une arborescence
Module glob
Permet de retrouver des fichiers (même syntaxe que sur Linux)
[1]:
import glob
# Retourne tous les dossiers et fichiers du dossier courant
glob.glob('*')
[1]:
['intro.ipynb',
'modules-tiers.ipynb',
'stdlib-data-types.ipynb',
'stdlib-file-directory.ipynb',
'stdlib-numeric-tools.ipynb',
'stdlib-string-services.ipynb',
'stdlib-subprocess.ipynb',
'virtual-environments.ipynb']
[2]:
# Retourne uniquement les fichiers concernant les standard libraries
glob.glob('stdlib*.*')
[2]:
['stdlib-data-types.ipynb',
'stdlib-file-directory.ipynb',
'stdlib-numeric-tools.ipynb',
'stdlib-string-services.ipynb',
'stdlib-subprocess.ipynb']
Module os.path
Aide au parcours d’une arborescence
[3]:
import os
# Dossier courant
cwd = os.getcwd()
cwd
[3]:
'D:\\Documents\\smai\\Travail\\CODES\\formation-python\\notebooks\\python-modules'
[4]:
# Retourne le dossier parent
print(os.path.dirname(cwd))
# Vérifie l'existence de fichiers
print(os.path.isfile(os.path.join(cwd,'intro.ipynb')))
# Gère les chemins relatifs (mais déconseillé)
print(os.path.isfile('intro.ipynb'))
# Transforme des chemins relatifs en chemins absolus
print(os.path.abspath('.'))
D:\Documents\smai\Travail\CODES\formation-python\notebooks
True
True
D:\Documents\smai\Travail\CODES\formation-python\notebooks\python-modules
Module shutil
Gère la création de fichiers
import shutil
# Copie de fichiers
shutil.copy(source,destination)
# Copie d'une arborescence
shutil.copytree(source,destination)
# Suppression d'une arborescence
shutil.rmtree(dossier_maitre)
Module pathlib
os.path + glob + open dans un seul objet Path !
[5]:
from pathlib import Path
cwd = Path()
[6]:
list(cwd.glob('*'))
[6]:
[WindowsPath('.ipynb_checkpoints'),
WindowsPath('intro.ipynb'),
WindowsPath('modules-tiers.ipynb'),
WindowsPath('stdlib-data-types.ipynb'),
WindowsPath('stdlib-file-directory.ipynb'),
WindowsPath('stdlib-numeric-tools.ipynb'),
WindowsPath('stdlib-string-services.ipynb'),
WindowsPath('stdlib-subprocess.ipynb'),
WindowsPath('virtual-environments.ipynb')]
[7]:
list(cwd.glob('stdlib*.*'))
[7]:
[WindowsPath('stdlib-data-types.ipynb'),
WindowsPath('stdlib-file-directory.ipynb'),
WindowsPath('stdlib-numeric-tools.ipynb'),
WindowsPath('stdlib-string-services.ipynb'),
WindowsPath('stdlib-subprocess.ipynb')]
[8]:
print(Path("rep/file.txt"))
print(Path("rep/file.txt").parent)
rep\file.txt
rep
[9]:
print(cwd / 'intro.ipynb')
(cwd / 'intro.ipynb').is_file()
intro.ipynb
[9]:
True
[10]:
myfile = Path('test/toto.txt')
myfile.parent.mkdir(exist_ok=True)
myfile.touch()
myfile.write_text("hello !")
new = myfile.replace('test/titi.txt')
new.read_text()
[10]:
'hello !'