2014-03-30 4 views
0

다음리스트 이해도 users = [item for item in out.split() if domain in item and userl in item]domainuserl 기준을 충족하는 경우에만 사용자를 users()에 추가해야 함을 나타냅니다. 그러나 sorted_list에 빈 결과가 나타납니다. 누구든지 이유를 제안 할 수 있습니까?목록 이해가 예상대로 작동하지 않습니다.

domain = 'domainanme' 
user_list = [test1, test2, test3] 
new_list = [] 

for userl in user_list: 
    try: 
     out = subprocess.check_output(["tasklist", "/V", "/FO", "List", "/FI", "USERNAME eq {0}\{1}" .format(domain, userl)], stderr=subprocess.STDOUT) 
     users = [item for item in out.split() if domain in item and userl in item] 
     sorted_list = set(users) 
     print sorted_list 
     if sorted_list != None: # this was an attempted to remove the EMPTY items 
      for name in sorted_list: 
       print name 
       new_list.append(name) 
      else: 
       pass 

인쇄 이름 출력

set([]) 
set([]) 
set([]) 

이 같은 출력이 모습입니다 :

tasklist output

+0

'item'은 목록 또는 문자열입니까? –

+0

@Yaw 전적으로 tasklist cmd의 출력으로 문자열을 가정합니다. – iNoob

+3

샘플'tasklist' 출력을 줄 수 있다면 도움이 될 것입니다. '밖으로'*는 무엇을 포함합니까? –

답변

0

출력의 도메인 이름이 대문자로되어 그 점을 고려하십시오. 위에서 쉽게 (가양에 모두있는 프로세스 이름을 이끌 수

users = [item for item in out.split() if domain.upper() in item.upper() and userl in item] 

내가 좀 더 지능적으로 그 출력을 구문 분석하는 것 : 대소 문자를 구분하지 일치를 보장하기 위해 모두의 경우를 정상화 도메인 및 사용자 이름, 심지어 텍스트가 겹치는 경우에도 일치).

+0

Martijn Pieters에게 감사드립니다. – iNoob

관련 문제