我目前有一个脚本(" monitor"),它监视并输出各种系统类型的数据到屏幕上。我有一个Python程序,当我使用此命令将监视器输出传递给我的Python程序时,后处理该信息。
/usr/local/bin/monitor | /mnt/usbkey/pgms/myMonitorPgm.py
这很好用。
我想使用os.system命令(或其他东西??)来运行监视器脚本并从我的Python程序中创建管道。这将在我启动Python程序时运行,从而消除了上述管道格式/命令的需要。
这可能吗?
答案 0 :(得分:3)
您应该查看subprocess模块,特别是使用stdout = PIPE创建Popen对象,然后您可以使用communic()或类似方法从Python程序中的管道读取。
例如,你可以这样做:
import subprocess
proc = subprocess.Popen( [ '/usr/local/bin/monitor' ], stdout=subprocess.PIPE )
stdout, _ = proc.communicate()
现在stdout将有运行监控程序的输出。
答案 1 :(得分:0)
在我看来,有效的方法是:
with open('/tmp/mailbody', 'w') as f:
f.write(body)
os.system('/usr/bin/heirloom-mailx -s ' + subject + ' ' + mail + '< /tmp/mailbody')