2016-07-07 3 views
0

다른 파일의 특정 키워드를 검색 할 수있는 코드를 작성하려고합니다. 찾으면 인쇄 줄과 호스트 이름; 다른 찾을 수없는 인쇄 "테스트 통과"및 호스트 이름발견 된 키워드가 print line이면 print 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") 

, 출력 내가 그것을 정확한 검색 결과를 반환하지만 모든 라인을 위해 키워드 인쇄는 "테스트 통과"찾을 doesnot 곳 찾고 있어요 것은

router 1 
not ready is ready 
reset me if required 

router 2 
test passed 
+0

그냥 문자열로 만들었습니다. 그냥 예제로 썼다. 그러한 오류를 용서해주십시오. 구현할 수있는 로직을 찾아야 만합니다. – Saadi381

답변

2

난 당신이

찾고있는 무슨이 생각입니다 그것은 것입니다 건네받은 경우 한 번만 넘긴 인쇄물

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