首页 > 解决方案 > Python: TypeError: 'int' object is not iterable - when iterating a dict

问题描述

I am trying to get the list of local user my windows have.

I figured it out i can get the list in a form of a dictionary using win32net.NetUserEnum, however, since i just need the username, i'm trying to fetch that information from the dict and i've managed to do it already.

But i still have a problem, the script it's returning this message:

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

Anyway knows why this is happening?

Thanks

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"))

标签: pythonwindowslistdictionarypywin32

解决方案


这符合您的要求吗?使用isinstance而不是检查类型的值。您收到此错误是因为 NetUserEnum 返回一个由用户字典和一些额外值(整数)组成的列表,如此处所述

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"))

推荐阅读