====== Manipulation du système de fichiers avec Python ======
==== Manipulation sur les chemins ====
=== Concaténer des chemins ===
import os
save_folder_repo = os.path.join(save_folder, name)
=== Obtenir le chemin du dossier d'un fichier ===
import os
filepath = "/a/b/c.txt"
os.path.dirname(filepath) # "/a/b"
=== Obtenir le dossier courant ===
Le dossier d’exécution du script:
import os
os.getcwd()
=== Obtenir le chemin absolu ===
import os
os.path.abspath("mydir/myfile.txt")
Le dossier du script qui s'exécute:
import os
os.path.dirname(os.path.abspath(__file__))
==== Vérifier si un dossier ou fichier existe ====
[[https://stackoverflow.com/questions/82831/how-do-i-check-whether-a-file-exists-without-exceptions|Source]]
import os
os.path.isdir(save_folder_repo)
# ou
os.path.exists(folder)
# ou pour les fichiers :
os.path.isfile(filename)
==== Créer un dossier ====
import os
os.makedirs(folder)
==== Lister les fichiers d'un dossier ====
[[https://stackoverflow.com/questions/3207219/how-do-i-list-all-files-of-a-directory|Source]]
import os
mypath = "chemin/vers/dossier"
onlyfiles = [os.path.join(mypath, f) for f in os.listdir(mypath) if os.path.isfile(os.path.join(mypath, f))]
=== Récursivement dans les sous-dossiers ===
[[https://docs.python.org/fr/3.6/library/glob.html]]
import glob
print(glob.glob('**/*', recursive=True))
==== Copier un dossier et son contenu ====
import shutil
shutil.copytree(src, dest)
==== Supprimer un dossier et son contenu ====
import shutil
shutil.rmtree(path)
==== Supprimer un fichier ====
import os
os.remove(filepath)
==== Enlever l'extension d'un nom de fichier ====
[[https://stackoverflow.com/questions/678236/how-to-get-the-filename-without-the-extension-from-a-path-in-python?rq=1|Source]]
import os
print(os.path.splitext("/path/to/some/file.txt")[0])
==== Fichiers temporaires ====
Utilise l'objet ''NamedTemporaryFile'' du module ''tempfile'' ([[https://stackoverflow.com/questions/44381249/treat-a-string-as-a-file-in-python|source]]) :
from tempfile import NamedTemporaryFile
f = NamedTemporaryFile(mode="w", delete=False)
f.write("Toto")
f.close()
print(f"Written in {f.name})