我正在编写一个处理不同 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 模块。
添加回答
举报
0/150
提交
取消