如果发现关键字打印行其他打印python

问题描述:

我想写一个代码,我可以从不同的文件中搜索某些关键字;如果找到打印行和主机名;否则找不到打印“考试合格”和主机名如果发现关键字打印行其他打印python

Hostsfile.txt 
router1 
router2 

router1.txt 

not ready is ready 
reset me if required 
blah 
blahhh blahh 

router2.txt 

blah 
blahhh blahh 

代码

hosts = open((hostsfile) , "r") 
keys = ['Not Ready','RESET'] 
hosts = [hosts for hosts in (hosts.strip() for hosts in open(hostsfile)) if hosts] 
for host2 in hosts: 
    f = [f for f in (f.strip() for f in open("router1.txt")) if f]     
    for line in f: 
     for keywords in keys: 
      if keywords in line: 
       print (line) 
       file2.write (line) 
      elif: 
       file2.write("Test Passed") 

它返回正确的搜索结果,但对于所有线路它亘古不变的查找关键字打印“考试合格”,输出I在找的是

router 1 
not ready is ready 
reset me if required 

router 2 
test passed 
+0

只是使它成为字符串;只是作为一个例子写的;所以请原谅这些错误;只需要找到一个可以执行的逻辑 – Saadi381

我觉得这是你在找什么

它会只有打印通过后才能通过一次

hosts = open((hostsfile) , "r") 
keys = ['Not Ready','RESET'] 
hosts = [hosts for hosts in (hosts.strip() for hosts in open(hostsfile)) if hosts] 
for host2 in hosts: 
    f = [f for f in (f.strip() for f in open("router1.txt")) if f] 
    testpassed = True 
    for line in f: 
     for keywords in keys: 
      if keywords in line: 
       print (line) 
       file2.write (line) 
       testpassed = False 
    if testpassed: 
    file2.write("Test Passed") 
+0

不工作;其印刷测试通过后,每个主机结果.. – Saadi381

+0

@ Saadi381对不起,我忘了在代码中添加testpassed = False,现在编辑代码,它应该工作 – Hani

+0

精湛...工作像一个魅力 – Saadi381