2012-03-03 22 views

Respuesta

76

La clave aquí es el atributo name del objeto f que representa el archivo abierto. Lo obtienes así:

>>> f = open('/Users/Desktop/febROSTER2012.xls') 
>>> f.name 
'/Users/Desktop/febROSTER2012.xls' 

¿Te sirve de ayuda?

+3

Para archivos creados por: 'tempfile.TemporaryFile (mode = 'w', prefix = 'xxx', sufijo = '. Txt')' no funciona! – Victor

+8

@Victor: por favor, lea la documentación del módulo 'tempfile', especialmente para [' tempfile.NamedTemporaryFile'] (http://docs.python.org/2/library/tempfile.html#tempfile.NamedTemporaryFile), justo debajo del documentación para 'tempfile.TemporaryFile' que mencionó. Este es un caso específico para el archivo temporal y, como se ve en los documentos, ya existe una solución. 'tempfile.TemporaryFile' no está destinado a ser utilizado en caso de que quiera leer el nombre. – Tadeck

+5

Si crea un archivo usando open ('foo.txt', 'w') y luego hace f.name, solo le proporciona la salida foo.txt – searchengine27

6

Y si solo desea obtener el nombre del directorio y no necesita el nombre del archivo que lo acompaña, puede hacerlo de la siguiente manera convencional utilizando el módulo os de Python.

>>> import os 
>>> f = open('/Users/Desktop/febROSTER2012.xls') 
>>> os.path.dirname(f.name) 
>>> '/Users/Desktop/' 

De esta manera puede hacerse con la estructura del directorio.

+0

Esto devuelve una cadena vacía si usa 'f = open ('febROSTER2012.xls')'. ¿Cómo puedes llegar al camino completo? – NZD

+1

@NZD: ver http://stackoverflow.com/a/38867035/1587329 –

34

Tuve exactamente el mismo problema. Si está utilizando una ruta relativa, os.path.dirname (ruta) solo devolverá la ruta relativa. os.path.realpath hace el truco:

>>> import os 
>>> f = open('file.txt') 
>>> os.path.realpath(f.name) 
+5

Esta es en realidad la respuesta real. – BlueTrin

0

lo puede conseguir como esto también.

filepath = os.path.abspath(f.name) 
Cuestiones relacionadas