解决python 执行shell命令无法获取返回值的问题

 更新时间:2020年12月05日 11:29:35   作者:四月的水  
这篇文章主要介绍了解决python 执行shell命令无法获取返回值的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

问题背景:利用python获取服务器中supervisor状态信息时发现未能获取到返回值。

python获取执行shell命令后返回值得几种方式:

# 1.os模块
ret = os.popen("supervisorctl status")
ret_data = ret.read()
# 2.subprocess模块
ret = subprocess.Popen('supervisorctl status',shell=True,stdout=subprocess.PIPE)
out,err = ret.communicate()
# 3.commands模块
ret_data = commands.getoutput("supervisorctl status")
# commands.getstatusoutput()还可获取到命令执行是否成功状态

一开始程序使用的是 os.popen() 方法,在交互式python shell或者IDE环境下使用上述方法都可以获取到执行的返回值,但当使用脚本执行时发现返回值为空,然后修改为使用 command.getoutput() 方法,这时获取到返回值为 “sh: supervisorctl: command not found”。

由此可知是执行命令时无法识别 supervisorctl 命令,但系统中是已经安装好supervisor的,于是使用 which supervisorctl 查看supervisorctl路径,以带路径的方式执行指令 “/usr/local/bin/supervisorctl status”,最后成功获取到返回值。

总结:

python使用shell命令操作非系统自带工具时,最好带上工具路径。

补充知识:python 如何判断调用系统命令是否执行成功

首先我们要知道如何调用系统命令:

>>> os.system('ls')
anaconda-ks.cfg install.log.syslog 模板 图片 下载 桌面
install.log     公共的           视频 文档 音乐
0
>>>
>>> os.system('lss')
sh: lss: command not found
32512
>>>

\\第一种,我们可以肉眼识别正确的会返回0,错误的则是非0

\\第二种,使用if判断调用系统命令返回值是否为0,如为0则不输出,不为0则输出 "Without the command"

-------------------错误-------------------

>>> if os.system('lss') !=0:print 'Without the command'
...
 
sh: lss: command not found
Without the command

-------------------正确-------------------

>>> if os.system('ls') !=0:print 'Without the command'
...
 
anaconda-ks.cfg install.log.syslog 模板 图片 下载 桌面
install.log     公共的           视频 文档 音乐
>>>

以上这篇解决python 执行shell命令无法获取返回值的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • keras和tensorflow使用fit_generator 批次训练操作

    keras和tensorflow使用fit_generator 批次训练操作

    这篇文章主要介绍了keras和tensorflow使用fit_generator 批次训练操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • python实现udp传输图片功能

    python实现udp传输图片功能

    这篇文章主要为大家详细介绍了python实现udp传输图片功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • win10下opencv-python特定版本手动安装与pip自动安装教程

    win10下opencv-python特定版本手动安装与pip自动安装教程

    这篇文章主要介绍了win10下opencv-python特定版本手动安装与pip自动安装教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • python实现人民币大写转换

    python实现人民币大写转换

    这篇文章主要为大家详细介绍了python实现人民币大写转换的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • python des,aes,rsa加解密的实现

    python des,aes,rsa加解密的实现

    这篇文章主要介绍了python des,aes,rsa加解密的实现,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-01-01
  • python实现人脸签到系统

    python实现人脸签到系统

    这篇文章主要为大家详细介绍了python实现人脸签到系统,带数据库存储,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • Python Pandas聚合函数的应用示例

    Python Pandas聚合函数的应用示例

    Pandas是当前Python数据分析中最为重要的工具,其提供了功能强大且灵活多样的API,可以满足使用者在数据分析和处理中的多种选择和实现方式,下面这篇文章主要给大家介绍了关于Python Pandas聚合函数的相关资料,需要的朋友可以参考下
    2022-07-07
  • 解决PyCharm 中写 Turtle代码没提示以及标黄的问题

    解决PyCharm 中写 Turtle代码没提示以及标黄的问题

    这篇文章主要介绍了解决PyCharm 中写 Turtle代码没提示以及标黄的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python把png转成jpg的项目实践

    Python把png转成jpg的项目实践

    本文主要介绍了Python把png转成jpg的项目实践,可以使用PIL库来将PNG图片转换为JPG格式,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • 详解python 条件语句和while循环的实例代码

    详解python 条件语句和while循环的实例代码

    这篇文章主要介绍了详解python 条件语句和while循环,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12

最新评论