Прочитать вывод другой программы с Python - PullRequest
0 голосов
/ 07 марта 2019

Допустим, я открыл CMD или PowerShell и ввел

ping google.com -t

Я получу постоянный поток пингов. (Очевидно, я мог бы также написать скрипт, который получает ping внутри Python, но это не проблема, я просто хочу знать, как это сделать в теории.) Теперь я хочу написать скрипт на Python, который получает эти выходные данные из CMD и распечатывает их, живи. Это вообще возможно?

Пример: я запускаю сервер, который печатает журналы в командной строке, и я хочу прочитать и сохранить их (я знаю, что сохранить, только моя проблема - получение)

Пример 2: я использую свой моно кошелек (не графический интерфейс, версия командной строки) и хочу скрипт, который уведомляет меня, когда деньги отправляются в

Подведены итоги: внешняя программа, пользовательским интерфейсом которой является командная строка или чьи журналы печатаются в CMD или аналогичных программах, запущена, и я хочу получить все, что печатает эта программа.

1 Ответ

2 голосов
/ 07 марта 2019

В Linux это самый простой способ.9590 - это pid процесса, а -s говорит, что выведите 500 символов из каждой строки вывода (в противном случае он усекается).

import os
stream = os.popen("strace -ewrite -p 9590 -s 500")
while 1:
  print( stream.readline() )

Вам нужно использовать sudo с strace

sudo python grab_output.py

Вывод с помощью ping google:

write(1, "64 bytes from 108.177.122.138 (108.177.122.138): icmp_seq=125 ttl=44 time=40.3 ms\n", 82) = 82
write(1, "64 bytes from 108.177.122.138 (108.177.122.138): icmp_seq=126 ttl=44 time=32.5 ms\n", 82) = 82

Так что вам придется очистить егонемного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...