====== File System - Fichiers et dossiers ======
===== Dossier en cours =====
import os
dossier = os.getcwd()
Changer de dossier :
import os
# Linux
os.chdir('/tmp')
# Windows
os.chdir('c:\\data\\prgpython\\test')
===== Script en cours =====
import os
print("current path : ", os.path.realpath(__file__))
print("current file : ", os.path.basename(__file__))
print("current folder: ", os.path.dirname(__file__))
Résultat :
FIXME :!: :!: :!: Il semblerait que ça ne fonctionne plus ???
current path : C:\data\prgpython\test\test.py
current file : test.py
current folder: C:\data\prgpython\test
===== Test si dossier ou fichier existe =====
import os
if os.path.isdir('/home/marc/test'):
...
if os.path.isfile('/home/marc/test/doc.txt'):
....
===== Date et heure d'un fichier =====
Source: [[https://www.geeksforgeeks.org/how-to-get-file-creation-and-modification-date-or-time-in-python/]]
Renvoie une valeur float représentant le nombre de secondes
écoulées depuis l'origine (qui dépend du système, sous Unix c'est
le 1er janvier 1970) :
import os
file_path = "c:\\chemin\\vers\\mon\\fichier"
time_created = os.path.getctime(file_path)
time_modified = os.path.getmtime(file_path)
Pour transformer ces valeurs en quelque chose de lisible, utiliser
les fonctions **time.ctime()** puis **time.strptime()** et **time.strftime()** :
import os, time
time_modified = time.strptime(time.ctime(os.path.getmtime(file_path)))
print(time.strftime("%d/%m/%Y, %H:%M:%S", time_modified))
print(time.strftime("%Y%m%d-%H%M%S", time_modified))
===== Découpage de chemin =====
Extraire le nom du fichier :
import os.path
chemin = "/home/marc/coucou/test.txt"
fichier = os.path.basename(chemin)
'test.txt'
Extraire le chemin du dossier
import os.path
chemin = "/home/marc/coucou/test.txt"
dossier = os.path.dirname(chemin)
'/home/marc/coucou'
===== Opérations sur les dossiers =====
Créer une suite de dossiers d'un coup
import os
os.makedirs("/home/marc/nouveau/dossier", mode=0o755, exist_ok=True)
===== Lister les fichiers d'un dossier =====
Lister les fichiers d'un dossier avec leur date/heure :
import os
path = './data'
list_of_files = os.listdir(path)
for file in list_of_files:
print(file, os.path.getctime(os.path.join(path, file)))
Filtrer selon une extension :
for file in list_of_files:
if file.endswith(".txt"):
print(os.path.join(path, file))
===== Suppression de fichiers =====
Supprimer le plus vieux fichier d'un dossier
import os
path = './log'
file_names = os.listdir(path)
full_paths = [path+"/{0}".format(x) for x in file_names]
oldest_file = min(full_paths, key=os.path.getctime)
os.remove(oldest_file)