鱼C论坛

 找回密码
 立即注册
查看: 994|回复: 2

求大神帮忙解惑python中的subprocess模块

[复制链接]
发表于 2018-5-9 11:35:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1 import subprocess
  2 def ping1(ip):
  3     if subprocess.call(['ping','-c','1',ip]):
  4         print(ip + 'active')
  5     else:
  6         print(ip + 'timeout')
  7
  8
  9 def ips():
10     with open('ip.txt') as f:
11         files = f.readlines()
12
13     for line in files:
14         ping1(line)
15
16
17 ips()

看上面那个代码,为什么条件语句是反的,为什么能正确ping通的主机会显示timeout,ping不通的主机显示active
按常理来说  if subprocess.call(['ping','-c','1',ip]):这句代码不是应该在能ping通的情况下调用的吗,为什么ping不通调用它了,ping通了反而调用的是else语句
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-5-9 11:56:50 | 显示全部楼层
是不是call函数正确返回的结果就是0,异常为其他
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-9 13:58:03 | 显示全部楼层
楼上正解

>>> subprocess.call(['ping'])  #ping不通为1
1
>>> subprocess.call(['ping' , '127.0.0.1']) #ping通为0
0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-30 02:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表