2012-08-01 8 views
7

ho scoperto che sto usando questo schema molto:Prendi il __FILE__ della funzione di un livello alto nella pila

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

così ho deciso di mettere in una funzione in un file che ha molte di queste piccole utilità:

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

il fatto è che, __file__ restituisce il file corrente e quindi la cartella corrente, e ho perso il punto. Ho potuto fare questo brutto hack (o semplicemente continuare a scrivere il modello così com'è):

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

e poi la chiamata ad essa sarà simile a questa:

filepath_in_cwd(__file__, "my_file.txt") 

ma io preferirei che mi aveva un modo di ottenere il __file__ della funzione che è di un livello in cima allo stack. C'è un modo per farlo?

risposta