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

我正在编写一个处理不同 shell 脚本的退出代码的 Python 脚本。


当我通过命令提示符调用 shell 脚本并使用 询问退出代码时echo $?,我得到 1。当我通过 python 脚本调用 shell 脚本时,我假设该值将为1,但结果却是 256。


发生了什么?


这是我用于测试相机的 shell 脚本:


#!/bin/bash 

#cam.sh


if [ -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 0

else

    exit 1

fi

我的 Python 调用:


#!/usr/bin/env python

#exitcodetest.py


import os


command = "sh ~/Desktop/cam.sh"

camera = os.system(command)

print(camera)

为什么?


aluckdog
浏览 160回答 1
1回答

千万里不及你

因为os.system不返回退出代码而是等待状态。要将其转换为您需要使用的返回代码os.waitstatus_to_exitcode(或os.WEXITSTATUS对于较旧的 Python 版本)。In [2]: os.WEXITSTATUS(256)                                                                                                                                                                                        Out[2]: 1如果您需要一些更“用户友好”的方式从 Python 运行命令/程序,我建议使用subprocess 模块。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python