python调用shell脚本os.system()和os.popen()方法区别

0x01. 准备一个tb.sh脚本

echo 'hello world'
echo 'tests codes'
exit 1

0x02. 测试os.system()和os.popen()方法

0x02_1. os.system()返回值是脚本的退出状态码

测试如图:
在这里插入图片描述
os.system(command):该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码, 高位为脚本的退出状态码,即脚本中“exit 1”的代码执行后,os.system函数返回值的高位数则是1,如果低位数是0的情况下,则函数的返回值是0x0100,换算为十进制得到256。要获得os.system的正确返回值,可以使用位移运算(将返回值右移8位)t>>8 还原返回值。

0x02_2. os.popen()返回值是脚本执行过程中的输出内容

测试如图:
在这里插入图片描述
可以看到os.popen(command)调用完后,会返回一个 f 文件对象,在python中使用readlines()命令将文件内容一次性读取,可以看到f中暂存的是脚本执行过程中的所有输出。

0x03. 总结

os.popen() 可以实现一个“管道”,值可以继续被使用。
os.system()则是直接返回执行的脚本结果。

参考链接:

python os.system()和os.popen()
通过 Python 来调用 Shell 脚本的三种常用方式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l8947943

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值