I hope this is not a duplicate.
I\'m trying to use subprocess.Popen()
to open a script in a separate console. I\'ve tried setting the shell=True
To open in a different console, do (tested on Win7 / Python 3):
from subprocess import Popen, CREATE_NEW_CONSOLE
Popen('cmd', creationflags=CREATE_NEW_CONSOLE)
input('Enter to exit from Python script...')
How can I spawn new shells to run python scripts from a base python script?
On Linux shell=True will do the trick:
command = 'python someFile.py'
subprocess.Popen('xterm -hold -e "%s"' % command)
Doesn't work with gnome-terminal as described here:
https://bbs.archlinux.org/viewtopic.php?id=180103
from subprocess import *
c = 'dir' #Windows
handle = Popen(c, stdin=PIPE, stderr=PIPE, stdout=PIPE, shell=True)
print handle.stdout.read()
handle.flush()
If you don't use shell=True
you'll have to supply Popen()
with a list instead of a command string, example:
c = ['ls', '-l'] #Linux
and then open it without shell.
handle = Popen(c, stdin=PIPE, stderr=PIPE, stdout=PIPE)
print handle.stdout.read()
handle.flush()
This is the most manual and flexible way you can call a subprocess from Python. If you just want the output, go for:
from subproccess import check_output
print check_output('dir')
import os
os.system("start cmd /K dir") #/K remains the window, /C executes and dies (popup)