2010-07-09 10 views
20

Tengo este programa que en un momento accede a os.getcwd(), pero algunas veces, dependiendo de dónde haya ido el programa antes de llegar a esa línea, se bloquea con el mensaje "OSError: [Errno 2] No dicho archivo o directorio". No puedo entender qué puedo hacer mal y luego llamar a os.getcwd(). No hay argumentos, y siempre debe haber un directorio de trabajo actual, ¿verdad?Python: ¿Por qué os.getcwd() a veces se bloquea con OSError?

+1

No hay necesidad de que su programa falle. Las excepciones son una parte normal y saludable de un programa de Python, y también lo es su manejo. Envuelva su llamada a os.getcwd() en una prueba: -excepto OSError:, muestre un mensaje adecuado si se produce la excepción y continúe con su programa. – PaulMcG

+0

http://stackoverflow.com/questions/27058053/selenium-python-webdriver-path-error-system-cant-find-the-path-specified – user4274867

Respuesta

28

El directorio actual puede haber sido eliminado por otro proceso.

+1

Gracias, eso fue todo. En algún lugar hice un cambio innecesario de workdir, lo eliminé más tarde en algún lugar, y luego me olvidé de volver a cambiar. – Eskil

+0

Tengo un error de archivo no encontrado en una llamada os.getcwd en python. Estoy intentando depurar mi aplicación. ¿De todos modos puedo recuperar qué directorio se eliminó? –

7

Puede obtener ese error si se ha eliminado el directorio de trabajo actual. Los programas que están trabajando en un directorio particular no se dan cuenta automáticamente si el directorio se elimina; en lo que respecta al programa, el CWD es solo una cadena, al menos hasta que haga algo como os.getcwd() que realmente acceda a esa ruta en el sistema de archivos. Por lo tanto, es posible tener un directorio actual que no existe.

Sin saber más acerca de su programa y su entorno de ejecución, no podría decirle si eso es lo que está sucediendo en realidad.

3

Obtendría ese error si su directorio actual ya no existe (se elimina).

+2

mover no hace este error, solo eliminar –

Cuestiones relacionadas