sous-processus ne fonctionne pas en Python
Je suis à l'aide de Python 2.6 pour des raisons que je ne peut pas éviter. J'ai exécuté la suite tout petit peu de code sur le Ralenti de la ligne de commande et j'obtiens une erreur que je ne comprends pas. Comment puis-je contourner ce problème?
>>> import subprocess
>>> x = subprocess.call(["dir"])
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
x = subprocess.call(["dir"])
File "C:\Python26\lib\subprocess.py", line 444, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python26\lib\subprocess.py", line 595, in __init__
errread, errwrite)
File "C:\Python26\lib\subprocess.py", line 821, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
>>>
Le
fonctionne pour moi sur les deux python2,7 et 3.3. il doit être le système de problème d'installation
Yep, dir fonctionne, et il fonctionne aussi dans les os.popen
J'ai essayé la dernière python ainsi et j'ai obtenu le même message d'erreur. Si vous avez une idée de ce qui est mal avec ma configuration, s'il vous plaît laissez-moi savoir.
Voir le dernier paragraphe de ma réponse pour une explication de pourquoi il ne fonctionne que sous Linux.
dir
de commande de travail lorsque vous tapez directement sur votre invite de commande de Windows? (comme il se doit)fonctionne pour moi sur les deux python2,7 et 3.3. il doit être le système de problème d'installation
Yep, dir fonctionne, et il fonctionne aussi dans les os.popen
J'ai essayé la dernière python ainsi et j'ai obtenu le même message d'erreur. Si vous avez une idée de ce qui est mal avec ma configuration, s'il vous plaît laissez-moi savoir.
Voir le dernier paragraphe de ma réponse pour une explication de pourquoi il ne fonctionne que sous Linux.
OriginalL'auteur user442920 | 2013-10-08
Vous devez vous connecter pour publier un commentaire.
Essayez de définir
shell=True
:dir
est un programme shell sens il n'existe pas de fichier exécutable que vous pouvez appeler. Doncdir
ne peut être appelé à partir d'une coquille, d'où leshell=True
.Noter que
sous-processus.appel
n'exécutera la commande sans vous donner sa sortie. Il ne reviendra que le statut de sortie de celui-ci (généralement 0 quand il a réussi).Si vous voulez obtenir à la sortie, vous pouvez utiliser
sous-processus.check_output
:Pour expliquer pourquoi cela fonctionne sur Unix: Il y a,
dir
est en fait un fichier exécutable, généralement placé au/bin/dir
, et, comme telle, accessible à partir du CHEMIN d'accès. Dans Windows,dir
est une fonction de l'interpréteur de commandecmd.exe
ou laGet-ChildItem
applet de commande en PowerShell (aliasdir
).ensuite, accepter la réponse
OriginalL'auteur poke