Tomerikoo:
Estoy moviendo algunos de mi código de os.path
a pathlib.Path
y encontró que, en general, es mucho mejor.
En una tarea específica descubrí que en realidad os.path
podría ser más cómodo de usar. Quiero crear un nuevo camino de un ser determinado, mediante la adición de un sufijo a su nombre y manteniendo la misma raíz y la extensión. Por ejemplo, a partir de:
/a/b/c/file.txt
Quiero tener:
/a/b/c/file_test.txt
Utilizando os.path
, esto se puede hacer fácilmente con splitext
:
>>> import os
>>> path = "/a/b/c/file.txt"
>>> base, ext = os.path.splitext(path)
>>> base + "_test" + ext
'/a/b/c/file_test.txt'
Sin embargo, repasando los pathlib
documentos 's , he encontrado with_name
y with_suffix
y tengo algo así como:
>>> from pathlib import Path
>>> path = Path("/a/b/c/file.txt")
>>> path.with_suffix('').with_name(path.stem + "_test").with_suffix(path.suffix)
PosixPath('/a/b/c/file_test.txt')
Que creo que es mucho peor que la os.path
versión.
¿Hay una manera mejor, más limpio de lograr esto con pathlib
?
Thierry Lathuille:
Mezclar algunos de sus enfoques, también se puede hacer:
from pathlib import Path
path = Path("/a/b/c/file.txt")
path.with_name(path.stem + '_test' + path.suffix)
# PosixPath('/a/b/c/file_test.txt')