subprocess.check_output提出CalledProcessError上非零退出代码,
ping返回非零退出代码,如果事情是错误的(如未知的域名或网站关闭,或者网站有ICMP阻塞出于某种原因,或者您的Internet连接已断开)
。
如果要检查输出和退出代码,请使用subprocess.Popen:
import subprocessimport syssite = sys.argv[1]ping_count = 4process = subprocess.Popen(['ping', site, '-c', str(ping_count)], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)returnpre = process.wait()print('ping returned {0}'.format(returnpre))print(process.stdout.read())例子:
$ python ping.py google.com <-- ping successfulping returned 0PING google.com (195.64.213.27) 56(84) bytes of data.64 bytes from cache.google.com (195.64.213.27): icmp_seq=1 ttl=57 time=59.8 ms64 bytes from cache.google.com (195.64.213.27): icmp_seq=2 ttl=57 time=2.43 ms64 bytes from cache.google.com (195.64.213.27): icmp_seq=3 ttl=57 time=77.0 ms64 bytes from cache.google.com (195.64.213.27): icmp_seq=4 ttl=57 time=43.8 ms--- google.com ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3004msrtt min/avg/max/mdev = 2.439/45.802/77.096/27.658 ms$ python ping.py asdasdas.com <-- DNS resolved, but site is downping returned 1PING asdasdas.com (69.172.201.208) 56(84) bytes of data.--- asdasdas.com ping statistics ---4 packets transmitted, 0 received, 100% packet loss, time 3024ms$ python ping.py asdasdasdasda.com <-- DNS failedping returned 2ping: unknown host asdasdasdasda.com


![Python'subprocess'CalledProcessError:命令'[…]'返回非零退出状态1 [重复] Python'subprocess'CalledProcessError:命令'[…]'返回非零退出状态1 [重复]](http://www.mshxw.com/aiimages/31/456039.png)
