Python-Extrae la ruta de la carpeta de la ruta del archivo
He visto esta solución, pero no específicamente para Python.
Me gustaría obtener solo la ruta de la carpeta de la ruta completa a un archivo.
Por ejemplo T:\Data\DBDesign\DBDesign_93_v141b.mdb
y me gustaría obtener solo T:\Data\DBDesign
(excluyendo el \DBDesign_93_v141b.mdb
).
He intentado algo como esto:
existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb'
wkspFldr = str(existGDBPath.split('\\')[0:-1])
print wkspFldr
Pero me dio un resultado como este:
['T:', 'Data', 'DBDesign']
Que no es el resultado que requiero (siendo T:\Data\DBDesign
).
¿Alguna idea sobre cómo puedo obtener la ruta de acceso a mi archivo?
Gracias.
4 answers
Ya casi llegaste con el uso de la función split
. Solo necesitabas unir las cuerdas, como sigue.
>>> '\\'.join(existGDBPath.split('\\')[0:-1])
'T:\\Data\\DBDesign'
Aunque, recomendaría usar la función os.path.dirname
para hacer esto, solo necesita pasar la cadena, y hará el trabajo por usted. Dado que parece estar en Windows, considere usar la función abspath
también. Un ejemplo -
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
Si desea que el nombre del archivo y la ruta del directorio se dividan, puede usar la función os.path.split
que devuelve una tupla, como seguir.
>>> os.path.split(os.path.abspath(existGDBPath))
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-12 04:24:01
Utilice el sistema operativo .path módulo:
>>> import os
>>> existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb'
>>> wkspFldr = os.path.dirname(existGDBPath)
>>> print wkspFldr
'T:\Data\DBDesign'
Puede seguir adelante y asumir que si necesita hacer algún tipo de manipulación de nombre de archivo ya se ha implementado en os.path
. Si no, es probable que todavía necesite usar este módulo como bloque de construcción.
ACTUALIZACIÓN
Uno debería considerar usar pathlib para un nuevo desarrollo. Está en el stdlib para Python3.4, pero está disponible en PyPI para versiones anteriores. Esta biblioteca proporciona un más método objeto-orented para manipular rutas <opinion>
y es mucho más fácil de leer y programar con </opinion>
.
>>> import pathlib
>>> existGDBPath = pathlib.Path(r'T:\Data\DBDesign\DBDesign_93_v141b.mdb')
>>> wkspFldr = existGDBPath.parent
>>> print wkspFldr
Path('T:\Data\DBDesign')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-08 00:34:49
El submódulo incorporado os.path tiene una función para esa misma tarea.
import os
os.path.dirname('T:\Data\DBDesign\DBDesign_93_v141b.mdb')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-14 19:30:33
Aquí está el código:
import os
existGDBPath = r'T:\Data\DBDesign\DBDesign_93_v141b.mdb'
wkspFldr = os.path.dirname(existGDBPath)
print wkspFldr # T:\Data\DBDesign
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-12 04:20:29