J'ai un fichier exécutable externe que j'essaie de lancer à partir d'un script Python. L'exécutable CMD s'exécute mais sans générer de sortie. Probablement qu'il se termine avant que la sortie puisse être générée. Toute suggestion sur la façon de retarder la sortie jusqu'à ce que les sorties sont générées?
import subprocess, sys
from subprocess import Popen, PIPE
exe_str = r"C:/Windows/System32/cmd C:/temp/calc.exe"
parent = subprocess.Popen(exe_str, stderr=subprocess.PIPE)
utilisez subprocess.call
, plus d'infos ici :
import subprocess
subprocess.call(["C:\\temp\\calc.exe"])
ou
import os
os.system('"C:/Windows/System32/notepad.exe"')
j'espère que ça t'aide...
La méthode os.system
est dépréciée et ne doit pas être utilisée dans de nouvelles applications. Le module de sous-processus est le moyen Pythonic de faire ce dont vous avez besoin.
Voici un exemple de code que j'ai écrit il y a quelques semaines en utilisant subprocess
pour charger des fichiers, la commande à utiliser pour retarder la sortie jusqu'à la réception des données et la fin du programme lancé est wait()
:
import subprocess
cmd = "c:\\file.exe"
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, creationflags=0x08000000)
process.wait()
creationflags=0x08000000
est un paramètre facultatif qui supprime le lancement d'une fenêtre, ce qui peut être utile si le programme que vous appelez n'a pas besoin d'être vu directement.
Option 1:
sous-processus d'importation
subprocess.call ('C:\Windows\System32\calc.exe')
Option 2:
sous-processus.Popen (['C:\Windows\System32\calc.exe'], stdout = sous-processus.PIPE, stderr = sous-processus.PIPE, Shell = True) .communicate ()
option 3:
importer os os.system ('C:\Windows\System32\calc.exe')