2012-08-01 7 views
7

me he dado cuenta que estoy usando este patrón mucho:Obtener el __file__ de la función de un nivel hacia arriba en la pila

os.path.join(os.path.dirname(__file__), file_path) 

así que he decidido poner en una función en un archivo que tiene muchas de esas pequeñas utilidades:

def filepath_in_cwd(file_path): 
    return os.path.join(os.path.dirname(__file__), file_path) 

la cosa es, __file__ devuelve el archivo actual y por lo tanto la carpeta actual, y yo he perdido el punto. Yo podría hacer esto feo corte (o simplemente seguir escribiendo el patrón tal cual):

def filepath_in_cwd(py_file_name, file_path): 
    return os.path.join(os.path.dirname(py_file_name), file_path) 

y luego la llamada a la que se verá así:

filepath_in_cwd(__file__, "my_file.txt") 

pero yo preferiría que me tenía una forma de obtener el __file__ de la función que está un nivel arriba en la pila. ¿Hay alguna forma de hacer esto?

Respuesta

Cuestiones relacionadas