为了账号安全,请及时绑定邮箱和手机立即绑定

Python 脚本通过 os.system() 调用 shell 脚本退出代码为 256 而不是 1

Python 脚本通过 os.system() 调用 shell 脚本退出代码为 256 而不是 1

aluckdog 2023-12-12 21:07:00
我正在编写一个处理不同 shell 脚本的退出代码的 Python 脚本。当我通过命令提示符调用 shell 脚本并使用 询问退出代码时echo $?,我得到 1。当我通过 python 脚本调用 shell 脚本时,我假设该值将为1,但结果却是 256。发生了什么?这是我用于测试相机的 shell 脚本:#!/bin/bash #cam.shif [ -r /dev/video0 ]then    #taking a picture    ffmpeg -f video4linux2 -s 640x480 -i /dev/dev0 -ss 0:0:2 -frames 1 ~/Desktop/testbild.jpg 2>/dev/null    #showing a stream     timeout 10s vlc v4l2:///dev/video0 --no-audio --no-video-title-show    exit 0else    exit 1fi我的 Python 调用:#!/usr/bin/env python#exitcodetest.pyimport oscommand = "sh ~/Desktop/cam.sh"camera = os.system(command)print(camera)为什么?
查看完整描述

1 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

因为os.system不返回退出代码而是等待状态。要将其转换为您需要使用的返回代码os.waitstatus_to_exitcode(或os.WEXITSTATUS对于较旧的 Python 版本)。

In [2]: os.WEXITSTATUS(256)                                                                                                                                                                                       
Out[2]: 1

如果您需要一些更“用户友好”的方式从 Python 运行命令/程序,我建议使用subprocess 模块。


查看完整回答
反对 回复 2023-12-12
  • 1 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信