Vorrei vedere qual è il modo migliore per determinare l'attuale directory di script in Python?
Ho scoperto che, a causa dei molti modi di chiamare il codice Python, è difficile trovare una buona soluzione.
Ecco alcuni problemi:
__file__non è definito se lo script viene eseguito conexec,execfile__module__è definito solo in moduli
Casi d'uso:
./myfile.pypython myfile.py./somedir/myfile.pypython somedir/myfile.pyexecfile('myfile.py')(da un altro script, che può trovarsi in un'altra directory e che può avere un'altra directory corrente.
So che non esiste una soluzione perfetta, ma sto cercando l'approccio migliore che risolva la maggior parte dei casi.
L'approccio più usato è os.path.dirname(os.path.abspath(__file__))ma questo in realtà non funziona se si esegue lo script da un altro con exec().
avvertimento
Qualsiasi soluzione che utilizza la directory corrente non funzionerà, ciò può variare in base al modo in cui viene chiamato lo script o può essere modificato all'interno dello script in esecuzione.
pathlibsoluzione di Ron Kalian se stai usando Python 3.4 o versioni successive: stackoverflow.com/a/48931294/1011724
python myfile.pyda una shell, funziona, ma entrambi :!python %e :!python myfile.pyall'interno di VIM falliscono con Il sistema non riesce a trovare il percorso specificato. Questo è abbastanza fastidioso. Qualcuno può commentare il motivo dietro questo e potenziali soluzioni alternative?