Outils pour utilisateurs

Outils du site


python:file_system

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)
python/file_system.txt · Dernière modification: 2022/11/07 08:23 par marclebrun