199 votes

Différence entre les sous-processus.Popen et les os.système

Quelle est la différence entre les sous-processus.Popen() et de l'os.system() ?

160voto

Jacob Marble Points 6121

Si vous découvrez la section sous-processus de l'Python docs, vous remarquerez qu'il y a est un exemple de la façon de remplacer os.system() avec subprocess.Popen():

sts = os.system("mycmd" + " myarg")

...fait la même chose que...

sts = Popen("mycmd" + " myarg", shell=True).wait()

Le "amélioré" le code a l'air plus compliqué, mais il vaut mieux, car une fois que vous savez subprocess.Popen(), vous n'avez pas besoin de rien d'autre. subprocess.Popen() remplace plusieurs autres outils (os.system() est juste un de ceux) qui ont été dispersés à travers trois autres modules Python.

Si cela peut aider, pensez à subprocess.Popen() très souple os.system().

83voto

Jan Hudec Points 27417

sous-processus.Popen() est stricte sur-ensemble de l'os.system().

39voto

Senthil Kumaran Points 14934

os.le système est équivalent à Unix, système de commande, tandis que les sous-processus est un module d'aide créé afin de fournir de nombreux équipements fournis par l'Popen commandes avec un plus facile et contrôlable de l'interface. Ceux qui ont été conçus similaire à Unix Popen de commande.

system() executes a command specified in command by calling /bin/sh -c command, and returns after the command has been completed

où que

The popen() function opens a process by creating a pipe, forking, and invoking the shell.

Si vous pensez, lequel utiliser, puis utiliser des sous-processus certainement parce que vous, vous avez toutes les facilités pour l'exécution, en plus de plus de contrôle sur le processus.

26voto

ajm Points 10000

Sous-processus est basé sur popen2, et comme telle, elle a un certain nombre d'avantages: il y a une liste complète dans le PEP ici, mais certains sont les suivants:

  • à l'aide de tuyaux dans le shell
  • meilleure nouvelle ligne de soutien
  • meilleure gestion des exceptions

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X