python中调用linux系统命令容易遇到的坑+(os.system,os.popen,subprocess.Popen区别)

本人在编写监控系统进程状态的脚本的时候,因为要涉及到调用系统命令查看linux系统进程pid以及时间等,所以使用到了os.popen().read()来获取返回值

然而调用命令发现无法获取到任何返回值,而直接在shell中执行实际上是存在进程的

原因是os.popen()中命令前需要加上sudo 

还有一点需要注意,read()后的返回值,一般带有\n,容易出现类型错误,需要split('\n')[0]获取原始值,如果是数字直接转类型即可

同时遇到的问题:如果os.popen()作为if中的条件判断是否存在进程,未加read(),会出现error writing standard output (Broken pipe) 的警告

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------os.system直接调用系统命令,返回标准输出

os.popen()需要调用read()才能获取标准输出

subprocess.Popen()是创建并返回一个子进程,并在这个进程中执行指定的程序

猜你喜欢

转载自blog.csdn.net/bang152101/article/details/89087511