要获取命令的输出,请使用
subprocess.check_output。如果命令失败,它将引发错误,因此将其放在一个
try块中。
import subprocesstry: response = subprocess.check_output( ['ping', '-c', '3', '10.10.0.100'], stderr=subprocess.STDOUT, # get all output universal_newlines=True # return string not bytes )except subprocess.CalledProcessError: response = None
若要用于
ping了解地址是否正在响应,请使用其返回值,该值为0表示成功。
subprocess.check_call如果返回值不为0,则将引发并出错。要抑制输出,请重定向
stdout和
stderr。使用Python
3,您可以使用
subprocess.DEVNULL而不是在一个块中打开空文件。
import osimport subprocesswith open(os.devnull, 'w') as DEVNULL: try: subprocess.check_call( ['ping', '-c', '3', '10.10.0.100'], stdout=DEVNULL, # suppress output stderr=DEVNULL ) is_up = True except subprocess.CalledProcessError: is_up = False
通常,使用
subprocess调用(如文档所述)旨在替换
os.system。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)