2014-03-26 1 views
0

안녕하세요, 모두 목록 작성 및 일부 정리를 사용하여 목록을 정리하려고합니다. 어떤 이유로 (그 날 alludes) 예상대로 작동하지 않는 필터링, 필자의 구문을 두 번 확인하고 그것을 확인 거의 트리플 긍정적 인 메신저.목록 이해의 형식 인쇄 문제

임과 유사한 출력 예상 :

DOMAINNAME\USERNAME

무엇 메신저 점점이 (가) 위의 .format 형식의 포맷이 내 아래에서 작동하지 않는 나에게 제안이

C:\python27\filename 
DOMAINNAME\USERNAME 

입니다 암호.

def tllocal(domain): 
    try: 
     out = subprocess.check_output(["tasklist", "/V", "/FO", "List", "/FI", "USERNAME eq {0}\*" .format(domain)]) 
     users = [item for item in out.split() if "{0}" and "\\" in item .format(domain)] 
     sortedl = set(users) 
     print sortedl 
     for name in sortedl: 
      print name 
    except CalledProcessError as e: 
     print(e.returncode) 
    return sortedl 

나는이 줄이 문제를 일으킨다 고 생각한다.

users = [item for item in out.split() if "{0}" and "\\" in item .format(domain)]

어떤 도움

주시면 감사하겠습니다.

답변

1

정확하고 틀립니다. '{0}' 리터럴 문자열이 항상 참이기 때문에 항상 True 어느

(if '{0}') and ("\\" in item .format(domain)) 

:로이 표현

if "{0}" and "\\" in item .format(domain) 

는 구문 분석됩니다.

위 기록의 올바른 방법은 all입니다 :

[item for item in out.split() if all(x in item for x in (domain, '\\'))] 

또는 단순히 and, 당신은 단지 두 가지 요소가 있기 때문에 :

[item for item in out.split() if domain in item and '\\' in item] 
+0

를 ^^ _ 지적 해 주셔서 대단히 감사합니다. 나는 그것이 정확했다라고 확신했다 :( – iNoob