Question

Je travaille sur un peu de code qui est supposé exécuter un fichier exe dans un dossier de mon système et obtenir une erreur disant ...

WindowsError: [Error 3] Le système ne peut pas trouver le chemin spécifié. Voici un peu du code:

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]

J'ai importé un sous-processus et également un import de sous-processus *

Par exemple, voici l’emplacement de mon fichier exe dans la première ligne du code que je montre:

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

Est-ce que je manque quelque chose?

Était-ce utile?

La solution

Vous devez correctement échapper à l'espace dans le chemin de l'exécutable

Autres conseils

En plus d'échapper correctement aux espaces et aux autres caractères pouvant causer des problèmes (tels que /), vous pouvez également utiliser les anciens chemins DOS à 8 caractères.

Par exemple, les fichiers de programme seraient:

Progra ~ 1, en veillant à ajouter ~ 1 pour les deux derniers caractères.

EDIT: Vous pouvez ajouter un r au début de la chaîne, ce qui en fait un littéral brut. Python lirait le caractère de chaîne pour caractère. Comme ceci:

r " \ Fichiers de programme "

Si je me souviens bien, vous n'avez pas besoin de citer votre chemin de fichier exécutable, comme vous le faites à la deuxième ligne.

EDIT: Eh bien, je viens d’attraper Windows et de le tester. Popen fonctionne de la même manière, que le chemin soit cité ou non. Donc, ce n'est pas un problème.

D'après ce que je sais, il n'est pas nécessaire de placer le chemin d'accès entre guillemets sauf si cmd.exe est impliqué dans l'exécution du programme.

De plus, vous pouvez utiliser la variable d'environnement ProgramFiles pour connaître l'emplacement actuel de 'Program Files' car il dépend des paramètres régionaux et peut également être modifié à l'aide de TweakUI.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top