Domanda
Sto lavorando su un po 'di codice che dovrebbe eseguire un file exe all'interno di una cartella sul mio sistema e ricevo un errore che dice ...
WindowsError: [Errore 3] Il sistema non riesce a trovare il percorso specificato. Ecco un po 'di codice:
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]
Ho importato sottoprocesso e anche dall'importazione di sottoprocesso *
Ad esempio, ecco come appare la mia posizione del file exe nella prima riga del codice che mostro:
exepath= os.path.join('/Program Files','next folder','next folder','blah.exe')
Mi manca qualcosa?
Soluzione
Devi uscire correttamente dallo spazio nel percorso eseguibile
Altri suggerimenti
Oltre a sfuggire correttamente agli spazi e ad altri caratteri che potrebbero causare problemi (come /), è anche possibile utilizzare i vecchi percorsi DOS di 8 caratteri.
Ad esempio, i file di programma sarebbero:
Progra ~ 1, assicurandosi di aggiungere ~ 1 per gli ultimi due caratteri.
EDIT: potresti aggiungere una r all'inizio della stringa, rendendola letterale non elaborata. Python leggeva il carattere stringa per carattere. In questo modo:
r " \ Programmi "
Se ricordo bene, non è necessario citare il percorso del file eseguibile, come nella seconda riga.
EDIT: Bene, ho appena preso la finestra di Windows nelle vicinanze e l'ho provato. Popen funziona allo stesso modo, indipendentemente dal fatto che il percorso sia citato o meno. Quindi questo non è un problema.
AFAIK, non è necessario racchiudere il percorso tra virgolette a meno che cmd.exe
non sia coinvolto nell'esecuzione del programma.
Inoltre, potresti voler utilizzare la variabile di ambiente ProgramFiles
per scoprire l'effettiva posizione di 'Program Files' perché dipende dalle impostazioni regionali e può anche essere modificata usando TweakUI.