Py学习  »  Python

subprocess.Popen问题---初学者求解,谢谢各位大神

bigtiger1985 • 6 年前 • 395 次点击  
import subprocess
import re
ping_waiting = "-w 1000";
ping_cmd = "ping";
ping_count_flag = "-n";

def ping_host_once (host,c):

  ping_count = " ".join([ping_count_flag,c])
    cmd_line = " ".join([ping_cmd,ping_waiting,ping_count,host])
    print(cmd_line)
    sub = subprocess.Popen([ping_cmd,ping_waiting,ping_count,host],stdout=subprocess.PIPE)
    #sub = subprocess.Popen(cmd_line,stdout=subprocess.PIPE)
    output = sub.stdout.read().decode("gbk")
    print (output)


a = ping_host_once("bai.com","5")

上述代码运行结果如下

D:\me>test2.py
ping -w 1000 -n 5 bai.com

正在 Ping bai.com [112.90.154.3] 具有 32 字节的数据:
PING:传输失败。常见故障。
PING:传输失败。常见故障。
PING:传输失败。常见故障。
PING:传输失败。常见故障。

112.90.154.3 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),

如果换成sub = subprocess.Popen(cmd_line,stdout=subprocess.PIPE) 结果就是正常的。谁知道是什么原因啊。win10环境。。。。。。。。

D:\me>test2.py
ping -w 1000 -n 5 bai.com

正在 Ping bai.com [112.90.154.3] 具有 32 字节的数据:
来自 112.90.154.3 的回复: 字节=32 时间=71ms TTL=48
来自 112.90.154.3 的回复: 字节=32 时间=70ms TTL=48
来自 112.90.154.3 的回复: 字节=32 时间=69ms TTL=48
来自 112.90.154.3 的回复: 字节=32 时间=71ms TTL=48
来自 112.90.154.3 的回复: 字节=32 时间=72ms TTL=48

112.90.154.3 的 Ping 统计信息:
数据包: 已发送 = 5,已接收 = 5,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 69ms,最长 = 72ms,平均 = 70ms
最后一次修改于 (2017-12-11 17:23)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/4546
 
395 次点击