ray salemi
El siguiente código:
from pathlib import Path
Desktop = Path('Desktop')
SubDeskTop = Desktop + "/subdir"
obtiene el siguiente error:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-eb31bbeb869b> in <module>()
1 from pathlib import Path
2 Desktop = Path('Desktop')
----> 3 SubDeskTop = Desktop+"/subdir"
TypeError: unsupported operand type(s) for +: 'PosixPath' and 'str'
Claramente estoy haciendo algo turbio aquí, pero plantea la pregunta: ¿Cómo accedo a un subdirectorio de un Path
¿objeto?
ray salemi
- Lo correcto operador extender un
pathlib
el objeto es/
from pathlib import Path
Desktop = Path('Desktop')
# print(Desktop)
WindowsPath('Desktop')
# extend the path to include subdir
SubDeskTop = Desktop / "subdir"
# print(SubDeskTop)
WindowsPath('Desktop/subdir')
# passing an absolute path has different behavior
SubDeskTop = Path('Desktop') / '/subdir'
# print(SubDeskTop)
WindowsPath('/subdir')
- Cuando se dan varios caminos absolutos, el último se toma como ancla (imitando
os.path.join()
comportamiento de ):
>>> PurePath('/etc', '/usr', 'lib64')
PurePosixPath('/usr/lib64')
>>> PureWindowsPath('c:/Windows', 'd:bar')
PureWindowsPath('d:bar')
- En una ruta de Windows, cambiar la raíz local no descarta la configuración de la unidad anterior:
>>> PureWindowsPath('c:/Windows', '/Program Files')
PureWindowsPath('c:/Program Files')
- Consulte la documentación para obtener detalles adicionales relacionados con dar una ruta absoluta, como
Path('/subdir')
.
Recursos:
Lo que estás buscando es:
from pathlib import Path
Desktop = Path('Desktop')
SubDeskTop = Path.joinpath(Desktop, "subdir")
la joinpath()
la función agregará el segundo parámetro al primero y agregará “https://stackoverflow.com/” por usted.
-
Eso funciona, aunque aprendí que el operador ‘/’ está sobrecargado para hacer lo mismo.
– Ray Salemi
10 de enero de 2018 a las 15:48
-
Buen punto. Principalmente uso el
path
módulo enos
por lo que el uso es un poco diferente.Path
crea un objeto de ruta pero enos.path
el objeto devuelto es una cadena, por lo que no podría llamar a esa función en sí mismo. Es bueno saberlo, TIL.– r.ook
10 de enero de 2018 a las 16:27
-
TENER CUIDADO:
SubDeskTop = Path.joinpath(Desktop, "/subdir")
no funcionará La barra antessubdir
lo arruina– patrickt
15 de junio de 2020 a las 10:41
Todas las respuestas actuales entienden que el OP realmente quería unirse otro camino pero que pasa si tu De Verdad quería añadir una cadena arbitraria (por ejemplo,
.tmp
)?– Jonathan Reinhart
11 de abril a las 2:03
¿Qué tal esto? ‘Ruta(str(ruta_orig)+”.tmp”)’
– Ray Salemi
12 abr a las 12:36
Path(str(orig_path)+".tmp")
– Ray Salemi
12 abr a las 13:03