上下文: 我有一个内部的Linux命令,比如说“signals”,它将输出oozie在那天放置的任何信号。
例如:
$signals | grep -i empty
*/user/oozie/coordinator/signals/2017/10/12/oltp1/_insurance_transaction_empty*
*/user/oozie/coordinator/signals/2017/10/12/oltp2/_loan_transaction_empty*
$signals | grep -i maxid
*/user/oozie/coordinator/signals/2017/10/12/oltp1/_insurance_transaction_maxid*
*/user/oozie/coordinator/signals/2017/10/12/oltp1/_loan_transaction_maxid*
我正在写一个python脚本,它每天运行,并将grep为“empty”和“maxid”信号peroltp并发送电子邮件。
假设oltp1有空信号,oltp2有maxid信号。它将发送一封包含所有oltp和信号的电子邮件。
我有一个配置文件,其中一列包含所有OLTP:
^{pr2}$代码:
#!/usr/bin/python
import commands
import os
config_file="/home/xxx/config_file"
for var in confil_file:
var=var.strip()
print " checking with OLTP:"+var
empty_cnt_loan=commands.getoutput("signals | grep -i empty | grep -i $var | wc -l")
maxid_cnt_loan=commands.getoutput("signals | grep -i maxid | grep -i $var| wc -l")
print empty_cnt_loan
尝试次数: 尝试使用$var
ERROR: grep: write error:Broken Pipe
尝试使用%var empty_cnt_loan的值为0,当我在linux box中运行命令时,它的值为2。
我试过子流程,但由于我是新来的,所以不知道如何使用它。。任何帮助都将不胜感激。
运行复杂的Bash管道来完成Python中微不足道的事情是一种反模式。只需运行
signals
一次,然后在Python中循环输出。在假设Python 3.6+
顺便说一句,},或其他一些标准实用程序)。在
grep
有一个选项-c
来计算匹配的数量;但是当您使用Python时,您几乎永远不需要grep
(或Awk,或sed
,或{相关问题 更多 >
编程相关推荐