2017-09-11 2 views
0

Je veux être en mesure de démarrer une application par exemple Notepad ou Chrome en utilisant un script python. Je l'ai essayé d'utiliser la fonction os.startfile():Utilisez la fonction python pour démarrer l'application et exécuter les commandes

import os 
os.startfile('Notepad') 

Il fonctionne, mais quand je lance une commande cmd à travers elle par exemple whoami:

import os 
os.startfile('whoami') 

Cela ouvre une fenêtre qui se ferme automatiquement. Une autre chose est lors de l'utilisation du module de sous-processus et l'ouverture de l'application à partir de là, le programme se bloque. Il attend que je ferme le programme que j'ai ouvert avant de continuer l'exécution. Je veux être capable d'exécuter des applications tout en étant capable d'exécuter des commandes cmd et de stocker la sortie dans une variable sans que le programme attende que je quitte l'application ouverte, le tout dans une seule fonction. Comment puis-je parvenir avec les critères que je l'ai mis à l'esprit

+1

double possible de [Appel d'une commande externe en Python] (https://stackoverflow.com/questions/89228/calling-an- external-command-in-python) – GPhilo

+0

Non, le terminal va «se bloquer» jusqu'à ce que vous terminiez l'application que vous avez ouverte. Je ne veux pas que le terminal se bloque, je veux qu'il s'exécute sans accrochage. –

+0

Ensuite, jetez un oeil à https://stackoverflow.com/questions/21936597/blocking-and-non-blocking-subprocess-calls – GPhilo

Répondre

0

Vous pouvez le faire avec la bibliothèque standard subprocess

import subprocess 

subprocess.Popen(prog) 
print('This is some real multi-tasking!') 

Avis que la déclaration d'impression arrive que le programme est en cours.

EDIT

Ok, essayez ceci:

import subprocess 

proc = subprocess.Popen('whoami', stdout=subprocess.PIPE) 
output = proc.stdout.read() 
print(output.decode()) 
+0

en cours d'exécution avec prog étant la commande whoami provoquera le tri du blocage jusqu'à ce que j'appuie sur entrer, je veux éviter cela à tout prix et je ne peux pas stocker la sortie de la commande ou lire à partir de celui-ci. –

+0

Essayez la nouvelle réponse :) –