1

所以我的代码遇到了一些问题,它被识别 keyboard.type()为类型而不是字符串,我有所有必要的导入。我怎样才能解决这个问题?

with open("words.txt") as fp:  
        line = fp.readline()
        cnt = 1
        while line:
                print(line)
                line = fp.readline()

                cnt += 1
                exploit(line)

def exploit(keyboard):
    time.sleep(2)
    keyboard.type(line)

错误:

File "C:\Users\User\Desktop\ref.py", line 63, in start
    exploit(line)
  File "C:\Users\User\Desktop\ref.py", line 46, in exploit
    keyboard.type("hello")
AttributeError: 'str' object has no attribute 'type'

键盘模块(https://pypi.org/project/pynput/)被导入

4

1 回答 1

1

我假设你有一条import keyboard线,你没有向我们展示。(下次请提供完整的 MCVE)。

问题出在这一行:

def exploit(keyboard):

keyboard模块将无法在此函数中访问,因为它的名称已被keyboard您在此处定义的参数覆盖。例如,如果您调用exploit("Hello")了 ,则此代码将尝试执行"Hello".type(line)。但该字符串没有名为 的方法type。您可能打算改用该名称line

def exploit(line):
    time.sleep(2)
    keyboard.type(line)

您可能认为函数需要在其签名中声明它使用哪些模块。不是这种情况。在文件顶部导入的模块将可以在该文件中的任何位置访问,而无需执行任何特殊操作。

于 2019-03-08T17:15:54.867 回答