web-dev-qa-db-fra.com

Existe-t-il un moyen idiomatique d'ajouter une extension en utilisant Pathlib de Python?

J'utilise Pathlib de Python et je veux prendre quelque chose comme

p = Path('/path/to/foo')

Et puis essayez quelques extensions différentes. Je peux faire

for ext in ['.txt', '.md', '.note']
    filename = Path(str(p) + ext)

mais cela semble un peu gênant. Y a-t-il une meilleure manière de faire cela?

19
Wayne Werner

La méthode with_suffix renvoie un nouveau chemin avec une extension différente, soit en modifiant une extension existante, soit en en ajoutant une nouvelle. Exemples tirés des documents:

>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
>>> p.with_suffix('.bz2')
PureWindowsPath('c:/Downloads/pathlib.tar.bz2')
>>> p = PureWindowsPath('README')
>>> p.with_suffix('.txt')
PureWindowsPath('README.txt')

Dans votre cas, p.with_suffix(ext) ferait l'affaire.

Pour les cas où vous devez ajouter un suffixe après tout suffixe existant au lieu de supprimer les suffixes existants, vous pouvez utiliser p.with_suffix(p.suffix+ext). C'est un peu maladroit, cependant, et je ne sais pas si je le préférerais à Path(str(p)+ext).