python - 用python读取另一个程序的输出
问题描述
所以假设我打开 CMD 或 PowerShell 并输入
ping google.com -t
我会收到源源不断的 ping。(我显然也可以编写一个在 python 中获取 ping 的脚本,但这不是问题,我只想知道如何在理论上做到这一点。)我现在想做的是编写一个 python 脚本,从CMD 并将它们打印出来,现场直播。这甚至可能吗?
示例:我正在运行一个将日志打印到命令行的服务器,我想读取并保存它们(我知道保存部分,只是检索是我的问题)
示例 2:我正在运行我的 monero 钱包(不是 gui,命令行版本),并且想要一个脚本在汇款时通知我
总结:一个外部程序,它的 UI 是一个命令行,或者它的日志被打印到 CMD 或类似的程序中,我想得到这个程序打印出来的所有东西。
解决方案
在 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
所以你得稍微清理一下。
推荐阅读
- apache-kafka - 我正在使用 Kafka Producer Api 将文件中的消息写入 kafka 主题,但 kafka 主题的日志显示为空?
- json - 仅从 Array 中检索值
- javascript - 如何从谷歌 api 文档中的数据中制作 vuex getter?
- java - 使用 thymeleaf 时使用多个页眉、页脚
- reactjs - React:使用 React-router 实现 Redux 时遇到问题
- pytorch - ModuleNotFoundError:没有名为“torch._C”的模块
- swift - 为什么这个 Swift 结构需要“变异”?
- vba - WorksheetFunction.Norm_S_Inv() 的问题
- php - 我需要保存在 URL 中的 ID 来更新数据库中的表
- apache - 如何使用 .htaccess 将 WSS 代理到 WS