【python2】commands模块getstatusoutput函数的小问题
发布时间:2020-07-08 21:37:03
来源:51CTO
阅读:2691
作者:对唔住
[TOC]
问题
import commands as subprocess
status, _ = subprocess.getstatusoutput("ps -elf|grep fuckU")
# status:
# 255
这里的status按照grep的定义其实应该返回1,也就是没有grep到匹配项,在shell中echo $? 结果为1
但是python2的getstatusoutput获取的并不是os.exitcode()而是os.wait()的返回值。
python3由于使用的是subprocess = modified(commands + subprocess),同样执行
status, _ = subprocess.getstatusoutput("ps -elf|grep fuckU")
得到的status为正确的1
我是怎么解决这个问题
兼顾Python2和Python3的使用习惯,使用google开源的subprocess32代替commands
什么是subprocess32
谷歌将Python32的subprocess移植到了python2版本中。据说这是线程安全的版本。
最新的Python32版本为3.5.3也就是将python3.5.3中的subprocess基本功能移植到了Python2中。但是subprocess32不包含原本commands中的函数。</