Vous voulez utiliser le pour quelque chose de sérieux module de subprocess
au lieu de os.system
,. Pour os.system
, faites ceci:
os.system('/home/myname/mydir/foo ')
Pour subprocess
:
p = subprocess.Popen(['/home/myname/mydir/foo'])
p.communicate('')
if p.returncode != 0:
raise Exception('foo failed')
Si vous vous souciez de argv de foo [0] étant 'foo' et non '/ home/myname/mydir/foo', faire ceci:
p = subprocess.Popen(['foo'], executable='/home/myname/mydir/foo')
la raison subprocess
est tellement mieux que os.system
est qu'il offre un meilleur contrôle sur la liste des arguments: il ne nécessite pas la ligne de commande t o être analysé par le shell, et cela évite toute une série de problèmes de sécurité potentiels, en particulier avec les noms de fichiers fournis par l'utilisateur et autres. L'autre raison est que subprocess
permet une meilleure gestion des erreurs et une meilleure redirection de stdin, stdout et stderr. (Non montré dans l'exemple ci-dessus.)
C'est tout. Hot-dog. –