2012-02-25 5 views
1

J'ai une chaîne appelée variable et j'ai besoin de faire l'équivalent subprocess de os.system. J'ai essayé de trouver un moyen de le faire, mais ont seulement trouvé:Python 3: Utilisation de sous-processus Au lieu de os.system

variable2 = subprocess.Popen(args, stdout=subprocess.PIPE) 
print variable2.communicate()[0] 

Cependant, je vais avoir du mal à comprendre comment l'utiliser. Comment puis-je atteindre mon objectif?

+0

Quels sont les 'args' ici? Dans Py3, 'print' est une fonction, pas une instruction. –

+0

Le bloc de code est copié/collé parce que je ne peux pas trouver un moyen de faire ce dont j'ai besoin moi-même, d'où la question. –

+0

Copie possible de [En Python, comment j'utilise un sous-processus à la place de os.system?] (Http://stackoverflow.com/questions/421206/in-python-how-i-do-use-subprocess-instead-of -os-system) –

Répondre

2

La documentation fournit des équivalents pour plusieurs fonctions de création de sous-processus de style ancien. os.system() est expliqué here.

+0

Existe-t-il un équivalent pour os.startfile() aussi? –

+1

N ° 'os.startfile()' est un wrapper spécifique à Windows autour de 'ShellExecute()'. –

1
In [4]: os.system('uname -a') 
Linux diego-workstation 3.0.0-16-generiC#28-Ubuntu SMP Fri Jan 27 17:44:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux 
Out[4]: 0 

In [8]: subprocess.call(['uname', '-a']) 
Linux diego-workstation 3.0.0-16-generiC#28-Ubuntu SMP Fri Jan 27 17:44:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux 
Out[8]: 0 
0

Regardez les fonctions subprocess.call, subprocess.check_call et subprocess.check_output. Vous devrez peut-être passer shell=True si vous exécutez une commande shell (comme cela serait donné à os.system) plutôt que de spécifier explicitement l'exécutable et une séquence d'arguments.

Questions connexes