写出通过bash执行的Python程序

问题描述 投票:0回答:1

我有一个可以在嵌入式Linux(在地震数字化仪上)上的bash命令中使用的小Python工具。在我的示例中,该工具调用传感器(在本例中为电压传感器),然后在终端中输出结果。 该工具只有 3 行调用库的脚本:

#!/usr/bin/python
import sys
from ccube.apps.ccube_sensors import main
sys.exit(main())

我真的不知道什么是“ccube.apps.ccube_sensors”。 没关系,我只是想将 bash 中的打印结果注入到 txt 文件中,但是执行“>”不起作用。

这里是工具的使用:

/usr/bin/ccube-sensors voltage -m all > test.log

(-m 是或“机器”格式输出,“all”是所有传感器)

在终端中,它会产生:

system=12.60V battery=3.25V

但是test.log仍然是空的。 注意:数字化仪运行旧的 2.7 python,这是一个带有未知嵌入式 Linux 的 arm proc 设备。

bash python-2.7 embedded-linux
1个回答
0
投票

问题在于您的 Python 滥用了

sys.exit()
函数来打印其输出。结果,它在
stderr
上打印作为参数接收的字符串,并以不成功的错误状态退出。由于在
stderr
(而不是
stdout
)上写入,消息不会被重定向。为了保持 Python 不变,您需要重定向
stderr
,如下所示:

/usr/bin/ccube-sensors voltage -m all 2> test.log

但是更好的解决方案是更改你的Python以停止滥用

sys.exit()
并使用常规的
print()
函数,然后你原来的
bash
脚本将起作用:

#!/usr/bin/python
from ccube.apps.ccube_sensors import main
print main()

我不了解 Python 2.7,但我相信

print()
曾经是这样工作的。

© www.soinside.com 2019 - 2024. All rights reserved.