为什么我的 Python-NMAP 模块的 .scan 函数显示 'str' 属性错误?

Why does my .scan function from the Python-NMAP module show 'str' Attribute Error?

我首先在 PyCharm 中安装了 nmap 模块,但收到了与我的 nmap.PortScanner 函数一样多的错误。

因此,我卸载了nmap并安装了python-nmap

现在,我在执行命令时遇到了问题:

import nmap
ns = nmap.PortScanner
ns.scan('My.IP.Add.ress', '1-1024', '-v')
print(ns.scaninfo())

我在第二行收到错误消息: AttributeError: 'str' 对象没有属性 '_nmap_path'

但是,观看所有示例,准确显示这些代码行。 有人可以解释发生了什么吗?

我的编辑器还为 ns.scaninfo() 显示参数 'self' 未填充的警告。同样,这不是示例显示的内容。我对此很困惑。

一如既往,非常感谢您的帮助!

(自发布 以来,我确信这是根本原因,因此发布作为答案。)

您在第二行缺少一些括号。它应该是:

ns = nmap.PortScanner()

实际上,您将 PortScanner class 存储在 ns 中,而不是 class 的对象。这意味着当您调用 ns.scan 时,它的第一个参数(它期望是 self,具有 _nmap_path 属性的 PortScanner 对象)实际上是一个字符串,它不没有属性。同样的原因也存在于您的编辑关于未填写 self 参数的警告背后。