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

时间:2018-10-31 22:23:20

标签: python python-3.x nmap

我首先在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”。同样,这不是示例所显示的。我对此感到非常困惑。

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

1 个答案:

答案 0 :(得分:2)

(自发布my comment起,我已经确信这是根本原因,因此请以发布为答案。)

第二行缺少一些括号。它应显示为:

ns = nmap.PortScanner()

实际上,您正在将PortScanner类存储在ns中,而不是该类的对象。这意味着,当您调用ns.scan的第一个参数(预期为self时,带有PortScanner属性的_nmap_path对象)实际上是一个字符串, t具有属性。出于同样的原因,您的编辑器也警告self参数也未填充。