2009-02-04 19 views

Respuesta

16
os.chdir(os.path.dirname(__file__)) 
+0

por la razón que sea __file__ fue C: \ dev \ Python25 \ Lib \ idlelib por lo que una rápida sustitución con argv [0] lo resolvió. +1 y marcar marcado –

+1

Además, dependiendo de la plataforma, puede usar 'os.path.abspath' en el resultado de' os.path.dirname' para asegurarse de que cualquier enlace simbólico u otra redirección de sistema de archivos se expanda correctamente. –

5

veces __file__ no está definido, en este caso se puede tratar sys.path[0]

+1

@Miki - ¿cuándo no se define '__file__'? –

+3

@RobBednark: 'python3.3 -c" imprimir (__ archivo __) "' –

+1

@JanusTroelsen: También es cierto para Python 2.7. – George

4

os.chdir(os.path.dirname(os.path.abspath(__file__))) debe hacerlo.

os.chdir(os.path.dirname(__file__)) no funcionaría si el script se ejecuta desde el directorio en el que está presente.

+0

También funciona para escribir 'os.chdir (os.path.dirname (__ file__) o '.')'. El problema en el directorio surge cuando '__file__' no tiene el prefijo'./'. 'os.path.dirname' devuelve una cadena vacía en ese caso. – George

+0

Bonita observación @George :) – iamas

0

en las ventanas del sistema operativo, si se llama algo así como somefile.py pitón este os.chdir (os.path.dirname (__ file__)) arrojará un WindowsError. Pero esto debería funcionar para todos los casos:

import os 
absFilePath = os.path.abspath(__file__) 
os.chdir(os.path.dirname(absFilePath)) 
Cuestiones relacionadas