@ganstar565

Как запустить программу в одной консоле, но чтобы выполнение происходило в другой?

Cложно сформулировал, но для примера возьму этот код:
spoiler
import os
from time import sleep
import random

os.startfile(r"C:\Windows\system32\cmd.exe")

delay = 0.2
multiplier = 20
text = ["HELLO WORLD!!! ", "HACKED ", " VIRUS DETECTED", " CLOSED" ]
color = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e"]
i = 0
while i < 40:
	r_c = random.choice(color) #+random.choice(color)

	print(random.choice(text) * multiplier)
	os.system(f"color {r_c}")
	
	sleep(delay)
	i +=1


Это простой скрипт который:
1) Запускает cmd
2) Принтит рандомные слова
3) Меняет их цвет.
Но мне нужно чтобы 2 и 3 пункт выполнялись в новой консоли, которую он раннее запустил.
Какие способы решения задачи вы видите?
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Можно обойтись без промежуточного cmd.exe если использовать модуль subprocess, и передать при создании дочернего процесса флаг subprocess.CREATE_NEW_CONSOLE (доступен только на винде).
Но тебе всё равно придётся вынести часть кода в дочерний процесс, так как один процесс может иметь только одно окно консоли.

Лучше подумай, не стоит ли использовать GUI. Если очень хочется консольку, то можно создать подобие GUI в ней, используя стандартный модуль curses. Проблема в том, что curses - либа под unix, так что надо искать порт под винду.
Например, этот пакет добавляет поддержку винды в стандартный модуль curses, делая программу более переносимой.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы