ping无限的时间,并在Python中获取其输出

破碎电机

任务是:尝试使用最基本的形式(如“ ping 8.8.8.8”)在python中发送ping。一段时间后,终止ping命令(在终端中,将执行Ctrl + C)并获取其输出。显示ping统计信息的最后几行输出特别受关注。

尝试了两种方法,没有用。我的操作系统版本是Mac OS X 10.10.1。

第一种方法使用模块pexpect,虽然我没有要求它停止,但ping将在大约17秒后停止:

import pexpect
import time
child = pexpect.spawn('ping 8.8.8.8')
(x, y) = child.getwinsize()
print x
print y
time.sleep(21)
child.terminate()
x = child.read()
print x

第二种方法使用模块子进程,并且ping输出的最后几行丢失:

import time
from subprocess import PIPE, Popen
child = Popen(['ping', '8.8.8.8'], stdin = PIPE, stdout = PIPE, stderr = PIPE)
time.sleep(5)
child.terminate()
x = child.stdout.read()
print x
x = child.stderr.read()
print x

我将不胜感激!不接受“ ping -c XXX”。

雅各布·布丁(Jacob Budin)

您拥有的第二个解决方案很棒。获得所需的行为(获得ping“结论”)只有一个问题:您向流程发送了错误的信号。

从外壳终止进程时,通常会发送SIGINT信号。请参阅“ bash-Ctrl-C如何终止子进程?” 这允许进程“包装”(例如,清理临时文件,提供调试信息)。

import signal

# Open process

child.send_signal(signal.SIGINT)

# Provide some time for the process to complete
time.sleep(1)

# Echo output

Popen.terminate(您现在正在使用的)发送SIGTERM而不是SIGINT

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

匹配值并在python中获取其列标题

根据时间戳进行组聚合,并在Arrays MongoDB中获取其前面的字段值

偏移两个列表中的正数和负数并在 Python 中获取其余数

输入一个项目并在python中获取其正则表达式

如何获取文件夹中的所有文件并在python中获取其MD5哈希?

了解插槽并在Alexa技能套件中获取其价值

使用子进程来ping地址并获取Python中的平均ping输出?

Ping输出-可读的时间

执行Shell命令,并在Chrome打包的应用中读取其输出

Powershell:在对象中查找值并在另一列中获取其对应的值

从查询中检索特定键值并在查询中获取其对的计数

检查密钥是否在字典中并在相同的“ if”中获取其值是否安全?

如何在 Visual Studio 中运行一行 Python 代码并在终端中获取输出?

如何从localhost网址读取图像并在javascript中获取其宽度和高度

如何遍历所有控件并在Android中获取其ID和值?

如何只检查选中的复选框并在React Native中获取其值?

如何将多列与给定的单列匹配并在新列中获取其名称?

单击父div时选择单选按钮,并在angularJS中获取其值

更新文档并在1个查询中获取其所有字段

使用变量作为数组的名称,并在bash中获取其元素之一

创建方法列表以供选择并在C#中获取其参数数量

在react Link中使用params并在另一个组件中获取其值?

在python中获取os.system的输出并在之后对其进行处理

如何在Unity中获取其他应用的像素输出?

花费时间在JavaScript中,然后获取其余脚本

如何获取Python子进程的输出并在之后终止它?

熊猫按多列分组并在行中获取输出

如何在嵌套列表中搜索列表的编号并在其他嵌套列表中获取其索引?

如何将代码块存储在变量中,并在需要时调用它并获取其返回值?