如何在python2.6中逐行输出shell并有条件地检查行

2024-04-23 09:29:49 发布

您现在位置:Python中文网/ 问答频道 /正文

你能不能请人帮我一下,我把下面的输出变为变量,读取他们的一些信息并存储到数据库中。好像是单行的,我想分成几行,一行一行地打印。你知道吗

命令的输出

kafka-mirror              Running (9)  on frun4316                                                             TIME            PID          Num.Streams
=======================================================================================================================================================
billing_-mainframe_-db2prod_-topic                                                                               Mar08           565
snap_-arep_-b2bowner_-topic,snap_-report_-b2bowner_-topic,snap_-arep_-isnapownera_-topic,snap_-report_-isnapownera_-topic Mar08           1024
meds_-mlinterview_-hiss_-topic,meds_-mlinterview_-dbo_-topic                                                     Mar08           1902
insite_-c1reppd_-insiteownera_-topic,insite_-cireprod_-insiteowner_-topic                                        Mar15           19386
atlas_-clmprgg_-geico_claimcenter_-topic                                                                         Mar15           22222            2
ecams_-ecamsdatastore_-ecamsmain_-topic                                                                          Mar09           28770
ies_-ies_-dbo_-topic                                                                                             Mar08           31651
ims_-ias_stage_-dbo_-topic                                                                                       Mar08           32109
tmi_-transactionalemail_-dbo_-topic                                                                              Mar08           32567

代码

def Kafka_mirror(envr,server):
        out = subprocess.Popen("/dsapps/admin/edp/scripts/edp-kafka-mirror-list all -e %s -h %s" % (envr,server), stdout=subprocess.PIPE, shell=True).communicate()
        return out

def mirrors_to_db(envr,server):

        for line in Kafka_mirror(envr,server):
                for i in line:
                        print(i)

脚本的输出

k
a
f
k
a
-
m
i
r
r
o
r

Tags: kafkareporttopicservermirrorsnapdbomeds
2条回答

我想把你的评论提到第一个答案

line 16, in mirrors_to_db for line in Kafka_mirror(envr,server).split('\n'): AttributeError: 'tuple' object has no attribute

这清楚地表明子流程.Popen函数以列表形式返回输出。 所以一个for循环就足够了:

def Kafka_mirror(envr,server):
    out = subprocess.Popen("/dsapps/admin/edp/scripts/edp-kafka-mirror-list all -e %s -h %s" % (envr,server), stdout=subprocess.PIPE, shell=True).communicate()
    return out

def镜像到数据库(envr,服务器):

    for line in Kafka_mirror(envr,server):
          print line

这应该对你有用。你知道吗

Update:

import re
def Kafka_mirror(envr,server):
    out = subprocess.Popen("/dsapps/admin/edp/scripts/edp-kafka-mirror-list all -e %s -h %s" % (envr,server), stdout=subprocess.PIPE, shell=True).communicate()
    return out

def mirrors_to_db(envr,
    for line in Kafka_mirror(envr,server):
           temp_list = re.split(r'\t+', line)
           print temp_list[0]
           print temp_list[1]
           print temp_list[2]
           print temp_list[3]

此代码应打印命令输出上的所有4个值。你知道吗

我没有Kafka,所以我使用了示例输出字符串作为示例来执行程序,并且删除了参数。你知道吗

    def Kafka_mirror():
        #out = subprocess.Popen("/dsapps/admin/edp/scripts/edp-kafka-mirror-     
        #list all -e %s -h %s" % (envr,server), stdout=subprocess.PIPE,  
        #shell=True).communicate()
        sampleOutput = """kafka-mirror              Running (9)  on frun4316                                                                 
        TIME            PID          Num.Streams


        ================================================================================    =======================================================================
        billing_-mainframe_-db2prod_-topic                                                                                   
        Mar08           565
        snap_-arep_-b2bowner_-topic,snap_-report_-b2bowner_-topic,snap_-arep_-isnapownera_-topic,snap_-report_-isnapownera_-topic Mar08           1024
        meds_-mlinterview_-hiss_-topic,meds_-mlinterview_-dbo_-topic                                                     Mar08           1902
        insite_-c1reppd_-insiteownera_-topic,insite_-cireprod_-insiteowner_-topic                                        Mar15           19386
        atlas_-clmprgg_-geico_claimcenter_-topic                                                                         Mar15           22222            2
        ecams_-ecamsdatastore_-ecamsmain_-topic                                                                          Mar09           28770
        ies_-ies_-dbo_-topic                                                                                             Mar08           31651
        ims_-ias_stage_-dbo_-topic                                                                                       Mar08           32109
        tmi_-transactionalemail_-dbo_-topic"""
        return sampleOutput


    def mirrors_to_db():
        for line in Kafka_mirror().split('\n'):
            print line

    mirrors_to_db()

相关问题 更多 >