嵌入式Linux下Python传感器工具输出无法重定向至文件的求助
解决Python工具输出重定向无效的问题
核心原因
你的Python工具大概率把输出写到了**标准错误流(stderr)**而非标准输出流(stdout)。bash的>默认仅重定向stdout,而stderr默认指向终端,所以终端能看到输出,但重定向生成的文件为空。
解决方法
1. 同时重定向stdout和stderr到文件
执行以下命令,将两种输出流都写入目标文件:
/usr/bin/ccube-sensors voltage -m all > test.log 2>&1
或者使用bash简化写法:
/usr/bin/ccube-sensors voltage -m all &> test.log
2. 验证输出流归属
如果想确认输出到底来自哪个流,可以分别定向测试:
- 单独捕获stderr内容:
/usr/bin/ccube-sensors voltage -m all 2> stderr.log
打开stderr.log如果能看到电压数据,即可确认输出确实走的是stderr。
3. 修改Python脚本(若有权限)
如果你能修改那3行的Python脚本,可以强制将库的输出转到stdout。假设原脚本如下:
import ccube.apps.ccube_sensors if __name__ == "__main__": ccube.apps.ccube_sensors.main()
修改为:
import sys import ccube.apps.ccube_sensors if __name__ == "__main__": # 将stderr临时重定向到stdout sys.stderr = sys.stdout ccube.apps.ccube_sensors.main()
修改后直接用>就能正常重定向输出。
额外说明
嵌入式Linux环境中,不少工具会将状态类输出放到stderr,避免与业务数据输出混淆,但这会导致默认重定向失效。优先使用命令行重定向的方式,无需修改代码更便捷。
内容的提问来源于stack exchange,提问作者BenjiBoy
相关产品推荐
相关产品推荐

