Я пытаюсь настроить (железный) скрипт на python, который отображает некоторую информацию об обработке в командной строке. Что-то вроде:
list = ["a", "b", "c"]
for i in list:
cmd /k echo str(list.index(i)) #just echo index and leave window open so user can see progression
Задача состоит в том, чтобы отправить несколько команд эха одному и тому же экземпляру командной строки.
Примечание: я не могу просто использовать print(i)
в этом случае, потому что этот сценарий ironpython будет работать внутри приложения визуального программирования, которое не позволяет печатать в командной строке. Цель сценария - пользователи могут видеть прогресс во время тяжелых операций.
Я сталкивался с несколькими потоками, которые предлагают подпроцесс для этого. Я видел и проверял множество примеров, но ни один из них не сработал. Я мог бы действительно помочь с этим.
Например, когда я делаю это ...
import subprocess
proc=subprocess.Popen("echo hello world", shell=True, stdout=subprocess.PIPE)
.... тогда я вижу, что возвращается "привет мир", поэтому эхо, вероятно, было успешным. Но я никогда не вижу всплывающее окно оболочки.
Редактировать 1
Еще несколько результатов теста: метод 1 дает хороший результат (команда выполнена, и экран оставлен открытым для чтения);метод 2: добавление стандартного вывода открывает оболочку и оставляет экран открытым, но без видимого результата - нечего читать;Способ 3: добавление стандартного ввода мигает экран (закрывает его слишком рано)
метод 1:
process = Popen("cmd /k dir")
метод 2:
process = Popen("cmd /k dir",stdout=subprocess.PIPE)
метод 3:
process = Popen('cmd /k dir',stdin=subprocess.PIPE)
Редактировать 2
Метод 4 - создает два отдельных окна cmd, одно показывает a, другое - b. Не это.
process = Popen("cmd /k echo a")
process = Popen("cmd /k echo b")
Метод 5 - добавление process.stdin.write после stdin - просто мигает
process = Popen('cmd /k echo a',stdin=subprocess.PIPE)
process.stdin.write("cmd /k echo b")
Это кажется таким простым, что я ищу, но это дает мнеголовная боль ...