为什么当我从python进行ping测试时,它对windowscmd的响应不同?

为什么当我从python进行ping测试时,它对windowscmd的响应不同?,python,cmd,subprocess,ping,Python,Cmd,Subprocess,Ping,当我在WindowsCMD中使用ping-L1-N1-W750 google.com命令时,它会给我大约10毫秒的ping。当我使用python和下面的代码对它进行测试时,它通过发出嘟嘟声和打印来定期检测超时,尽管超时时间为750ms import subprocess import winsound import datetime while 1: try: subprocess.check_output(['ping', '-l', '1', '-n', '1', '

当我在WindowsCMD中使用ping-L1-N1-W750 google.com命令时,它会给我大约10毫秒的ping。当我使用python和下面的代码对它进行测试时,它通过发出嘟嘟声和打印来定期检测超时,尽管超时时间为750ms

import subprocess
import winsound
import datetime
while 1:
    try:
        subprocess.check_output(['ping', '-l', '1', '-n', '1', '-w', '750', 'google.com'])
    except:
        print("cut at:", datetime.datetime.now())
        winsound.Beep(250, 500)
提出的例外情况是:

subprocess.CalledProcessError: Command '['ping', '-l', '1', '-n', '1', '-w', '750', 'google.com']' returned non-zero exit status 1

为什么它会有如此不同的响应?有没有一种方法可以让代码更可靠地检测到互联网中断?

我发现了这个问题。因为它在一个无限的while循环中,它会每秒ping google很多次,他们的dos防护可能会注意到这一点,并防止更多的请求导致超时。它很容易用
时间来修复。在try部分中sleep(1)

插入
raise
行作为
except
子句的第一行,看看抛出的异常实际上是什么。谢谢,我已经在问题中添加了这一点。在我的Linux机器上,我无法复制这一点。我猜:你的防病毒和/或防火墙设置不允许这样做。猜测2:您正在以不同的用户或不同的权限级别运行这两个测试。尝试暂时禁用A/V和防火墙。