所以可以说我打开CMD或PowerShell,然后输入
ping google.com -t
我将不断收到ping信号。 (我显然也可以编写一个脚本来获取python中的ping信息,但这不是问题,我只想知道理论上如何做到这一点。)我现在想做的是编写一个python脚本,该脚本从python中获取这些输出。 CMD并实时打印出来。这有可能吗?
示例:我正在运行一台将日志打印到命令行的服务器,我想读取并保存它们(我知道保存部分,只是检索是我的问题)
示例2:我正在运行monero钱包(而不是gui,命令行版本),并且想要一个脚本,该脚本在汇款时通知我
总结:一个外部程序,其UI是一个命令行,或者其日志被打印到CMD或类似程序中,并且我想获取该程序打印出的所有内容。
答案 0 :(得分:2)
在linux上,这是最简单的方法。 9590是进程的pid,-s表示从每条输出行写出500个字符(否则它会被截断)。
import os
stream = os.popen("strace -ewrite -p 9590 -s 500")
while 1:
print( stream.readline() )
您需要在strace中使用sudo
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
所以您必须清理一下。