Subprocess.Popen в другой консоли Надеюсь, это не дубликат. Я пытаюсь использовать subprocess.Popen(), чтобы открыть script в отдельной консоли. Я попытался установить параметр shell=True, но это не помогло. Я использую 32-разрядный Python 2.7 на 64-битной Windows 7. Ответ 1 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') Чтобы открыть новое окно GUI консоли и выполнить X: import os os.system("start cmd /K dir") #/K remains the window, /C executes and dies (popup) Ответ 2 Чтобы открыть в другой консоли, выполните (протестируйте на 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? Ответ 3 Я попробовал createflags = CREATE_NEW_CONSOLE на Win7/python 2.7, и это тоже сработало. Ответ 4 В Linux shell = True будет делать трюк: command = 'python someFile.py' subprocess.Popen('xterm -hold -e "%s"' % command) Не работает с гном-терминалом, как описано здесь: https://bbs.archlinux.org/viewtopic.php?id=180103
Ответ 1 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') Чтобы открыть новое окно GUI консоли и выполнить X: import os os.system("start cmd /K dir") #/K remains the window, /C executes and dies (popup)
Ответ 2 Чтобы открыть в другой консоли, выполните (протестируйте на 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?
Ответ 4 В Linux shell = True будет делать трюк: command = 'python someFile.py' subprocess.Popen('xterm -hold -e "%s"' % command) Не работает с гном-терминалом, как описано здесь: https://bbs.archlinux.org/viewtopic.php?id=180103