Je dispose d'un fichier texte (report.log) avec plein de lignes. J'extrait l'une d'entre elles dans laquelle se trouve un chemin qui m'intéresse dont je veux récupérer le titre d'un fichier. Pour l'heure, je peine à extraire la partie du chemin qui m'intéresse.
Ce que j'ai :
Generated file: G:\NavDB\0_Production\ATAT_K8494A\AB01\FMS220_ATR\PROD\ATR2_AZUN_\2209\3\DATA\ATR2_AZUN_22093.dat soit le contenu de la ligne qui m'intéresse grâce à un premier bout de code.
Ce que je veux :
récupérer la partie ATR2_AZUN_22093.dat du chemin.
tu ne m'as toujours pas dit pourquoi c'est sale et pas robuste .... :-)
Si on écrit os.path.basename(path), pas besoin de documenter ce qu'on fait (contrairement à path.split('\\')[-1][0]). L'autre intérêt est que ceux qui ont écrit la bibliothèque auront traité les cas limites (voir le code source).
Dans cette optique, il faudrait écrire path.name (l'équivalent d'os.path.basename pour pathlib) et non path.parts[-1]. C'est aussi dégueu qu'un path.split('\\')[-1][0] puisqu'il faut encore le documenter en faisant attention aux cas limites.
Pour ton autre question (cf sujet fermé parce que tu as mis une image au lieu d'utiliser le bouton </> pour insérer ton code) mais je mets la réponse ici parce que c'est sur la même problématique). tu cherches à avoir du coup la première partie du chemin
Il faut utiliser os.dirname() => os.dirname(r"c:/temp/toto.txt") => "c:/temp"
Toutes les fonctions de Pathlib et os.path sont valides cross-plateforme. Le séparateur Windows est \ mais sur Unix c'est /. Donc faire un split en hardcodant le séparateur c'est prendre le risque de ne pas avoir le bon résultat si l'utilisateur l'exécute sur une autre plateforme.
Pareil, il ne faut pas s'amuser à utiliser des + et / pour créer des chemins mais utiliser os.path.join ou Pathlib.
- Edité par Nephthys 13 septembre 2022 à 12:03:15
Extraction d'une partie d'un chemin
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
PB68
PB68
Le Tout est souvent plus grand que la somme de ses parties.
PB68
PB68