列表理解不按预期工作

时间:2014-03-30 00:29:07

标签: python list-comprehension

以下列表理解users = [item for item in out.split() if domain in item and userl in item]因为它表明只有符合users()domain条件的用户才会将用户添加到userl。但是我在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

1 个答案:

答案 0 :(得分:0)

输出中的域名是大写的;确保你考虑到这一点。规范化 both 的大小写以确保不区分大小写的匹配:

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

我会更聪明地解析输出,因为上面的内容很容易导致误报(包含域和用户名的进程名称,即使重叠文本也匹配)。