← retour aux snippets

os.fspath et __fspath__: unifier les chemins

Convertir les objets path-like en str/bytes de manière sûre.

python filesystem #os#fspath#pathlike

objectif

Convertir les objets path-like en str/bytes de manière sûre.

code minimal

import os, pathlib
p = pathlib.Path("x.txt")
print(os.fspath(p).endswith("x.txt"))  # attendu: True

utilisation

import os, pathlib
class MyPath:
    def __init__(self, path): self._p = pathlib.Path(path)
    def __fspath__(self): return str(self._p)
print(os.fspath(MyPath("a/b"))[-3:] == "a/b"[-3:])

variante(s) utile(s)

import os
print(callable(os.fspath))

notes

  • Acceptez PathLike dans vos APIs et passez toujours par os.fspath.
  • pathlib.Path implémente déjà fspath.