operator modules from example python python-2.7 python-module

modules - Python: OSError:[Errno 2] No existe tal archivo o directorio: ''''



python module operator (3)

¿Has notado que no recibes el error si corres?

python ./script.py

en lugar de

python script.py

Esto se debe a que sys.argv[0] leerá ./script.py en el primer caso, lo que le da a os.path.dirname algo con lo que trabajar. Cuando no especifica una ruta, sys.argv[0] lee simplemente script.py , y os.path.dirname no puede determinar una ruta.

Tengo un raspador de python de 100 líneas y 3 años que ahora falla. Las líneas de salida son:

import urllib, re, os, sys, time # line 1: import modules os.chdir(os.path.dirname(sys.argv[0])) # line 2: all works in script''s folder > relative address # (rest of my script here!)

Cuando se ejecuta,

$cd /my/folder/ $python script.py

Recibo el error:

python script.py Traceback (most recent call last): File "script.py", line 2, in <module> os.chdir(os.path.dirname(sys.argv[0])) OSError: [Errno 2] No such file or directory: ''''

¿Cómo debo leer este error y qué hacer?


Tuve este error porque estaba proporcionando una cadena de argumentos a subprocess.call lugar de una matriz de argumentos. Para evitar esto, use shlex.split :

import shlex, subprocess command_line = "ls -a" args = shlex.split(command_line) p = subprocess.Popen(args)


Utilice os.path.abspath() :

os.chdir(os.path.dirname(os.path.abspath(sys.argv[0])))

sys.argv[0] en su caso es solo un nombre de script, no directorio, por lo que os.path.dirname() devuelve una cadena vacía.

os.path.abspath() convierte eso en una ruta absoluta correcta con el nombre del directorio.