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

本文介绍了在Python中使用os.popen、subprocess.Popen和commands.getoutput等方法执行shell命令时遇到返回值为空或错误的问题,特别是在苹果系统上返回32512。通过确认命令路径并带路径执行,成功获取到了supervisorctl状态。同时,文章提供了判断系统命令执行成功与否的方法。
摘要由CSDN通过智能技术生成

问题背景:利用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”,最后成功获取到返回值。

总结:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值