戳人痛处

导航

[记]Python获取控制台输出的方法

使用库 os、subprocess

1.使用subprocess库

非实时读取

import subprocess

# xe = subprocess.run("iperf3 -c 127.0.0.1 -p 5668 -J",stdout=subprocess.PIPE)
xe = subprocess.run("ping baidu.com",stdout=subprocess.PIPE)

print(xe.stdout.decode("gbk"))#打印控制台输出
print(xe.returncode)#为0为运行ok,为1则运行异常

0x01 执行成功

输出打印

正在 Ping baidu.com [220.181.38.148] 具有 32 字节的数据:
来自 220.181.38.148 的回复: 字节=32 时间=36ms TTL=49
来自 220.181.38.148 的回复: 字节=32 时间=36ms TTL=49
来自 220.181.38.148 的回复: 字节=32 时间=37ms TTL=49
来自 220.181.38.148 的回复: 字节=32 时间=37ms TTL=49

220.181.38.148 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 36ms,最长 = 37ms,平均 = 36ms

0

0x02 执行失败

输出打印

Ping 请求找不到主机 xezzc.com。请检查该名称,然后重试。

1

实时读取

import subprocess

def cmd_deal(cmd:str):
    xe = subprocess.Popen(cmd,stdout=subprocess.PIPE)
    while True:
        rt_data = xe.stdout.readline().decode("GBK")
        if rt_data!="":
            print(rt_data,end="")
        else:
            break
    return xe.wait()#执行成功返回0,执行失败返回1

if __name__=="__main__":
    print(cmd_deal("ping baidu.com"))

0x01执行成功

输出打印

正在 Ping baidu.com [220.181.38.251] 具有 32 字节的数据:
来自 220.181.38.251 的回复: 字节=32 时间=39ms TTL=49
来自 220.181.38.251 的回复: 字节=32 时间=39ms TTL=49
来自 220.181.38.251 的回复: 字节=32 时间=39ms TTL=49
来自 220.181.38.251 的回复: 字节=32 时间=39ms TTL=49

220.181.38.251 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 39ms,最长 = 39ms,平均 = 39ms
0

0x02执行失败

输出打印

Ping 请求找不到主机 bxsdsd.com。请检查该名称,然后重试。
1

 

2.使用os库

非实时读取

import os
xe=os.popen("ping baidu.com",'r')

print(xe.read())

0x01执行成功

输出打印

正在 Ping baidu.com [220.181.38.251] 具有 32 字节的数据:
来自 220.181.38.251 的回复: 字节=32 时间=39ms TTL=49
来自 220.181.38.251 的回复: 字节=32 时间=39ms TTL=49
来自 220.181.38.251 的回复: 字节=32 时间=40ms TTL=49
来自 220.181.38.251 的回复: 字节=32 时间=40ms TTL=49

220.181.38.251 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 39ms,最长 = 40ms,平均 = 39ms

0x02执行失败

输出打印

Ping 请求找不到主机 bxsezc.com。请检查该名称,然后重试。

 

posted on 2021-12-08 19:56  戳人痛处  阅读(3262)  评论(0编辑  收藏  举报