Python 返回集合列表为空
我正在尝试迭代项目列表并执行Python 返回集合列表为空,python,Python,我正在尝试迭代项目列表并执行子流程。请使用列表中的每个项目检查\u output命令。然后我使用一些列表理解来过滤输出,最后set(list)来删除重复项。我现在试图返回集合(列表),但它一直返回[]。谁能解释一下是什么问题吗 def local_file(domain, user_list, debug): """function iterates list of target users locally""" if debug == True: print "
子流程。请使用列表中的每个项目检查\u output
命令。然后我使用一些列表理解来过滤输出,最后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
您只能
return
ing最后一个排序的\u列表集,它必须是用户\u列表末尾的空集
基本上是这样的:
def f():
for i in range(10):
var = i
return var
print f()
>>> 9
您应该.append()
将已排序的\u列表添加到新列表中,并在函数末尾返回该列表以恢复所有内容:
def f():
varList = []
for i in range(10):
var = i
varList.append(var)
return varList
print f()
由于其他人已经回答了您的主要问题,即覆盖循环中的变量,我已经重写了它,因此它只调用“tasklist”一次并解析输出,而不是对user_list中的每个用户反复调用它:
import subprocess
import csv
user_list = ['Test']
domain='MyPC'
tasklist = subprocess.check_output("tasklist /V /FO CSV")
tasks = csv.DictReader(tasklist.splitlines(), dialect="excel")
users = set()
for task in tasks:
if task['User Name'] == 'N/A': continue
task_domain, task_user = task['User Name'].split('\\')
if domain == task_domain and task_user in user_list:
users.add(task_user)
print '\n'.join(users)
# return users
(请考虑哪些查询可以通过注册表快速登录到用户,也可以在远程计算机上运行)。您确定
用户
不是空的吗?请先打印用户列表,然后再将其传递到set()函数。我已经检查过了,它不是空的。排序列表中项目的也成功打印了每个项目。@atlastlistic arr ok这很有意义。你会在for循环中建议以下内容吗sorted_list=new_list.append(item)
我不知道您的数据是什么样子,但我的第一个想法是在for循环外创建一个空列表,然后在for循环内创建一个空列表,new_list.append(sorted_list)
用于每个集合,并在末尾返回新的_list
。它仍然生成一个空列表:$,如果我放置返回新的\u列表
,如上所述。我没有任何打印项目。如果我把它放在我原来的帖子里的同一个地方。我仍然得到空白return
代码背后的想法是识别系统上使用的帐户。因此,如果我有一个域管理员帐户,并且想知道这是否在我的网络上被错误地使用(例如用作服务帐户等),那么这不会回答问题question@iNoob其他人已经回答了这个问题,没有别的话要说。我已经编辑了我的帖子,所以它现在是一个解决方案,提供了“用任务列表列出用户”的答案,尽管它是从您最初的方法重新设计的。我已经查看了psloggedon,它不包含我需要的一些功能,所以它不是一个可行的选项。无论如何,谢谢你;)用户列表中的if domain==task\u domain和task\u user:users.add(user)
不起作用,因为我在if
语句中没有用于添加的“项”?