Python:TypeError:迭代di时,“int”对象不可iterable

2024-10-01 05:07:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试获取我的windows的本地用户列表。你知道吗

我想我可以用win32以字典的形式得到这个列表net.NetUserEnum但是,由于我只需要用户名,所以我正在尝试从dict中获取这些信息,而且我已经成功地做到了。你知道吗

但我还是有个问题,脚本返回了这样一个信息:

Administrator Traceback (most recent call last): Guest File "D:/QUIZ/OCRLAB/orissupportaut.py", line 9, in DefaultAccount for user in listausers[i]: userjohn TypeError: 'int' object is not iterable teste UtilityAccount

你知道为什么会这样吗?你知道吗

谢谢

import win32api
import win32net
import win32netcon

listausers = win32net.NetUserEnum(None,2)

utilizadores= []
for i in range(len(listausers)):
    for user in listausers[i]:
        if type(user) == int:
            pass
        else:
            print(user.get("name"))

Tags: inimport信息列表for字典windows形式
3条回答

我找到了解决办法。。数组listausers中的最后一个索引是int值..并且不能迭代int值。尝试将代码放入try catchenter image description here

基于CDJB的答案,我将把所有内容压缩为:

import win32api
import win32net
import win32netcon

listausers = win32net.NetUserEnum(None, 2)[0] # 0 to ignore the extra returned values.   
utilizadores = [user.get("name") for user in listausers]

这符合你的要求吗?使用isinstance而不是检查类型的值。出现此错误是因为NetUserEnum返回一个由用户dict和一些额外值(int)组成的列表,如here所述。你知道吗

import win32api
import win32net
import win32netcon

listausers = win32net.NetUserEnum(None,2)

utilizadores= []
for i, users in enumerate(listausers):
    if not isinstance(users, int):
        for user in users:
            if isinstance(user, int):
                pass
            else:
                print(user.get("name"))

你也可以通过切分列表来查看字典本身。你知道吗

for user in listausers[0]:
    print(user.get("name"))

相关问题 更多 >