我试图迭代一个项目列表,并使用列表中的每个项目执行subprocess.check_output
命令。然后我使用一些列表理解来过滤输出,最后使用set(list)
来删除重复项。我现在试图返回set(list)
,但它一直返回[]
。有人能解释一下问题出在哪里吗?你知道吗
def local_file(domain, user_list, debug):
"""function iterates list of target users locally"""
if debug == True:
print "Local search based on user-file."
else:
pass
print "Targeted Users Found On LocalHost\n"
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)
for item in sorted_list:
print item
except CalledProcessError as e:
errormessage = e.output
print errormessage
print "\nCompleted"
return sorted_list
因为其他人已经回答了您的主要问题,覆盖了循环中的变量,所以我重写了它,使它只调用一次“tasklist”并解析输出,而不是对user\u list中的每个用户反复调用:
(考虑一下SysInternals' PsLoggedOn,它可以通过注册表快速查询登录的用户,也可以在远程计算机上运行)。你知道吗
您只在
return
查找最后一个排序的\u列表集,它必须是用户\u列表末尾的一个空集。你知道吗基本上是这样的:
您应该
.append()
将已排序的列表转换为新列表,并在函数末尾返回该列表以恢复所有内容:相关问题 更多 >
编程相关推荐