2011-09-03 16 views
7

Estaba buscando una solución, pero no he encontrado lo que necesito.Python: directorio de scripts

Guión ruta: /dir/to/script/script.py o C: \ dir \ script.py

resultado exceptuado:

$ ./script.py 
output: /dir/to/script 
$ cd .. && ./script/script.py 
output: /dir/to/script 

¿Hay alguna función en OS módulo o algo?


me mezclan las soluciones y escritura:

print os.path.abspath(os.path.dirname(__file__)) 

Pero es feo. ¿Hay una mejor manera?

Respuesta

15

os.path.realpath le dará el resultado:

os.path.dirname(os.path.realpath(__file__)) 
+0

la pregunta formulada por el nombredir guión. todo lo que realpath hace es eliminar enlaces simbólicos y luego devolver 'os.path.abspath' – wim

+0

@wim ok corregido, gracias por señalar –

+2

sigue siendo frágil y asume ciertas cosas sobre el cwd y desde donde se ejecutó el script. por ejemplo, ponga 'os.chdir ('/ tmp')' en la línea superior en el script y esta solución se puede romper. – wim

Cuestiones relacionadas