J'espère que ce n'est pas un doublon.
J'essaie d'utiliser subprocess.Popen()
pour ouvrir un script dans une console distincte. J'ai essayé de régler le Shell=True
paramètre mais cela n'a pas fait l'affaire.
J'utilise un 32 bits Python 2.7 sur un Windows 7 64 bits.
from subprocess import *
c = 'dir' #Windows
handle = Popen(c, stdin=PIPE, stderr=PIPE, stdout=PIPE, Shell=True)
print handle.stdout.read()
handle.flush()
Si vous n'utilisez pas Shell=True
, Vous devrez fournir à Popen()
une liste au lieu d'une chaîne de commande, exemple:
c = ['ls', '-l'] #Linux
puis ouvrez-le sans Shell.
handle = Popen(c, stdin=PIPE, stderr=PIPE, stdout=PIPE)
print handle.stdout.read()
handle.flush()
Il s'agit de la manière la plus manuelle et flexible dont vous pouvez appeler un sous-processus à partir de Python. Si vous voulez juste la sortie, optez pour:
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)
Pour ouvrir dans une autre console, faites (testé sur Win7/Python 3):
from subprocess import Popen, CREATE_NEW_CONSOLE
Popen('cmd', creationflags=CREATE_NEW_CONSOLE)
input('Enter to exit from Python script...')
Comment puis-je générer de nouveaux shells pour exécuter python à partir d'une base python?
J'ai essayé creationflags = CREATE_NEW_CONSOLE sur Win7/python 2.7 et cela a également fonctionné.