Pregunta

Estoy trabajando en un bit de código que se supone que ejecuta un archivo exe dentro de una carpeta en mi sistema y aparece un error que dice ...

WindowsError: [Error 3] El sistema no puede encontrar la ruta especificada. Aquí hay un poco del código:

exepath = os.path.join(EXE file localtion)
exepath = '"' + os.path.normpath(exepath) + '"'
cmd = [exepath, '-el', str(el), '-n', str(z)]

print 'The python program is running this command:'
print cmd

process = Popen(cmd, stderr=STDOUT, stdout=PIPE)
outputstring = process.communicate()[0]

He importado subprocesos y también de importación de subprocesos *

Por ejemplo, así es como se ve la ubicación de mi archivo exe en la primera línea del código que muestro:

 exepath= os.path.join('/Program Files','next folder','next folder','blah.exe')

¿Me estoy perdiendo algo?

¿Fue útil?

Solución

Necesita escapar correctamente del espacio en la ruta ejecutable

Otros consejos

Además de escapar correctamente de espacios y otros caracteres que podrían causar problemas (como /), también puede usar las rutas antiguas de DOS de 8 caracteres.

Por ejemplo, los archivos de programa serían:

Programe ~ 1, asegurándose de agregar ~ 1 para los últimos dos caracteres.

EDITAR: puede agregar una r al frente de la cadena, convirtiéndola en un literal sin formato. Python leería el carácter de cadena por carácter. Así:

r " \ Archivos de programa "

Si no recuerdo mal, no necesita citar su ruta de archivo ejecutable, como lo hace en la segunda línea.

EDITAR: Bueno, simplemente agarré el cuadro de Windows cercano y probé esto. Popen funciona igual independientemente de que la ruta se cite o no. Entonces esto no es un problema.

AFAIK, no hay necesidad de rodear la ruta entre comillas a menos que cmd.exe participe en la ejecución del programa.

Además, es posible que desee utilizar la variable de entorno ProgramFiles para averiguar la ubicación real de 'Archivos de programa' porque eso depende de la configuración regional y también se puede ajustar con TweakUI.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top