python3中os.system(cmd)的返回值

在Python中,os.system(cmd)的返回值不是执行程序的直接返回结果,而是一个16位数值,其高位代表返回码。例如,执行返回码为1的shell脚本,os.system()会返回256(0x0100),实际返回码为1。当返回码改为2时,os.system()返回512(0x0200),实际返回码为2。推荐使用subprocess模块来执行shell脚本以获取准确的返回值。
摘要由CSDN通过智能技术生成

在python中用os.system()的返回值的问题,

我们经常会默认os.system(cmd)的返回值是0,

但是os.system的返回值并不是执行程序的返回结果。而是一个16位的数,它的高位才是返回码。

我们创建一个shel脚本:test.sh,最后的返回码为1:

#!/bin/bash

echo "hello world!"

exit 1

 

我们使用os.system()执行脚本:


>>> import os
>>> cmd='./test.sh'
>>> mm=os.system(cmd)
hello world!
>>> print (mm)
256

可以看到shell脚本执行完成后,返回的值是256,但是跟我们实际想要的值不一样:

os.system的返回值并不是执行程序的返回结果。而是一个16位的数,它的高位才是返回码。也就是说os.system()返回256即 0×0100,返回码应该是其高位0×01即1。

十六位二进制数示为:00000001,00000000,高八位转乘十进制为 1           对应   linux命令返回值 1

>>> import os
>>> mm = os.system('./test.sh')
hello world!
>>> print (mm>>8)
1

当我们把test.sh的exit的值修改为2

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值