I have an external executable file which i am trying to run from a Python script. CMD executable runs but without generating output. Probably it exit before output can be generated. Any suggestion about how to delay exit until outputs are generated?
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)
option 1:
import subprocess
subprocess.call('C:\Windows\System32\calc.exe')
option 2:
subprocess.Popen(['C:\Windows\System32\calc.exe'],stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True).communicate()
option 3:
import os os.system('C:\Windows\System32\calc.exe')
use
subprocess.call
, more info here:or
i hope it helps you...
The
os.system
method is depreciated and should not be used in new applications. The subprocess module is the pythonic way to do what you require.Here is an example of some code I wrote a few weeks ago using
subprocess
to load files, the command you need to use to delay exit until data has been received and the launched program completes iswait()
:creationflags=0x08000000
is an optional parameter which suppresses the launch of a window, which can be useful if the program you are calling does not need to be directly seen.