Надеюсь, это не дубликат.
Я пытаюсь использовать subprocess.Popen()
, чтобы открыть script в отдельной консоли. Я попытался установить параметр shell=True
, но это не помогло.
Я использую 32-разрядный Python 2.7 на 64-битной Windows 7.
Надеюсь, это не дубликат.
Я пытаюсь использовать subprocess.Popen()
, чтобы открыть script в отдельной консоли. Я попытался установить параметр shell=True
, но это не помогло.
Я использую 32-разрядный Python 2.7 на 64-битной Windows 7.
from subprocess import *
c = 'dir' #Windows
handle = Popen(c, stdin=PIPE, stderr=PIPE, stdout=PIPE, shell=True)
print handle.stdout.read()
handle.flush()
Если вы не используете shell=True
, вам нужно указать Popen()
список вместо командной строки, например:
c = ['ls', '-l'] #Linux
а затем откройте его без оболочки.
handle = Popen(c, stdin=PIPE, stderr=PIPE, stdout=PIPE)
print handle.stdout.read()
handle.flush()
Это самый ручной и гибкий способ вызывать подпроцесс из Python. Если вам просто нужен выход, перейдите для:
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)
Чтобы открыть в другой консоли, выполните (протестируйте на Win7/Python 3):
from subprocess import Popen, CREATE_NEW_CONSOLE
Popen('cmd', creationflags=CREATE_NEW_CONSOLE)
input('Enter to exit from Python script...')
Как я могу создавать новые оболочки для запуска скриптов python с базового python script?
Я попробовал createflags = CREATE_NEW_CONSOLE на Win7/python 2.7, и это тоже сработало.
В Linux shell = True будет делать трюк:
command = 'python someFile.py'
subprocess.Popen('xterm -hold -e "%s"' % command)
Не работает с гном-терминалом, как описано здесь: