我正在使用subprocess
像这样的模块:
ping = subprocess.Popen('fping.exe 192.168.2.3 196.65.58.69', stdout=PIPE)
output = ping.stdout.readlines()
我需要的是output
列表以便稍后在程序中处理它,但似乎因为标准输出被定向到PIPE
它不会将结果输出到控制台。我想同时获得控制台输出(当它被执行时)和output
list.
我怎样才能做到这一点 ?
我进行了搜索并得到了答案here https://stackoverflow.com/a/4585898/963318,但我无法实施它。
我在 Windows 环境中使用 Python 3.x。
Thanks.
不存在连接两个地方的管道这样的东西。写入管道的所有内容都只会被读取一次。 (虽然从理论上讲,您的程序和控制台可以访问同一个输出管道,但如果您成功这样做,那么只有部分数据会进入您的程序,而只有没有的数据最终会进入您的程序)控制台。)为了将所有输出获取到程序和控制台,必须有人读取并复制数据。在类 Unix 系统上,您可以使用“tee”命令来执行此操作,但您的 Windows 计算机上可能没有该命令。
因此,您必须在获得输出后将其写入控制台。
在这种情况下,您可能可以在循环中使用 readline() 而不是 readlines()。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)