在安装了python-nmap0.14后,写了一个简单的测试执行失败。
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "D:\opt\Python27\lib\multiprocessing\forking.py", line 373, in main
prepare(preparation_data)
File "D:\opt\Python27\lib\multiprocessing\forking.py", line 488, in prepare
'__parents_main__', file, path_name, etc
File "E:\Workspace\scanner_01.py", line 13, in <module>
nma.scan(hosts='192.168.18.0/24', arguments='-sP')
File "D:\opt\Python27\lib\site-packages\nmap\nmap.py", line 417, in scan
self._process.start()
File "D:\opt\Python27\lib\multiprocessing\process.py", line 130, in start
self._popen = Popen(self)
File "D:\opt\Python27\lib\multiprocessing\forking.py", line 271, in __init__
dump(process_obj, to_child, HIGHEST_PROTOCOL)
File "D:\opt\Python27\lib\multiprocessing\forking.py", line 193, in dump
ForkingPickler(file, protocol).dump(obj)
File "D:\opt\Python27\lib\pickle.py", line 224, in dump
self.save(obj)
File "D:\opt\Python27\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "D:\opt\Python27\lib\pickle.py", line 419, in save_reduce
save(state)
File "D:\opt\Python27\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "D:\opt\Python27\lib\pickle.py", line 649, in save_dict
self._batch_setitems(obj.iteritems())
File "D:\opt\Python27\lib\pickle.py", line 681, in _batch_setitems
save(v)
File "D:\opt\Python27\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "D:\opt\Python27\lib\pickle.py", line 747, in save_global
(obj, module, name))
pickle.PicklingError: Can't pickle <function scan_progressive at 0x01C255B0>: it
's not found as nmap.nmap.scan_progressive
代码如下:
import nmap
nma = nmap.PortScannerAsync()
def callback_result(host, scan_result):
print '------------------'
print host, scan_result
nma.scan(hosts='192.168.18.0/24', arguments='-sP')
while nma.still_scanning():
print("Waiting ...")
nma.wait(2)
起初以为代码写错了,然后我找到nmap安装目录下的example.py执行,发生同样的错误。经过反复跟踪,发现在pickle.py文件745行抛出了错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\opt\Python27\lib\site-packages\nmap\nmap.py", line 413, in scan
target=self.scan_progressive,
AttributeError: 'PortScannerAsync' object has no attribute 'scan_progressive'
然后又阅读nmap的源码nmap.py,终于发现在402行,方法scan_progressive被定义在scan方法内部,导致pickle失败。
解决方法:
将方法Scan_progressive定义到外面,并将nmap.py 413行从
target=scan_progressive,
改为:
target=self.progressive,
即可。
总结:不晓得有木有其他的影响,但是得出一个结论,别人的东西,不能尽信,是钢是铁,试了才晓得。。。。
分享到:
相关推荐
pickle Python多进程程序在pycharm2023运行报错解决
本文实例讲述了Python ...PicklingError: Can’t pickle <type>: attribute lookup __builtin__.function failed 查了下官方文档发现python默认只能pickle以下的类型: None, True, and False integers, floa
主要介绍了解决python多线程报错:AttributeError: Can't pickle local object问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
报错信息: Traceback (most recent call last): File “D:/flaskProject/test.py”, line 35, in test pool.apply(self.out, args=(i,)) File “Python37-32\lib\multiprocessing\pool.py”, line 261, in apply ...
jsonpickle 是一个 Python 库,用来序列化复杂的 Python 对象到 JSON 文档。 示例代码: >>> import jsonpickle >>> pickled = jsonpickle.encode(obj) 标签:jsonpickle
本文研究的主要是Python使用pickle模块存储数据报错解决方法,以代码的形式展示,具体如下。 首先来了解下pickle模块 pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。 pickle模块只能在...
caffe.proto文件是一个消息格式文件,后缀名为proto. proto文件即消息协议原型定义文件,在该文件中可以通过使用描述性语言来定义程序中需要用到的数据格式
使用dtree做右键菜单。proto.menu关键代码就在这里了
本文实例讲述了Python使用pickle模块报错EOFError Ran out of input的解决方法。分享给大家供大家参考,具体如下: 遇到了 EOFError:Ran out of input ... return pickle.load(f) except EOFError: #捕获异常EOFError
运行FCN网络时出现如下错误Cannot feed value of shape (0,) ..., 224, 224, 3)',原因是MITSceneParsing.pickle size太小,正常size应该是4595KB。将上面文件下载并替换掉Data_zoo\MIT_SceneParsing中的1k相同文件。
When you can't use binary distribution, you need to install Visual Studio or Windows SDK on Windows. (NOTE: Visual C++ Express 2010 doesn't support amd64. Windows SDK is recommanded way to build amd64...
Pickle 可帮你轻松的安装 PHP 扩展,支持所有平台。基于 Composer 开发。 使用方法: $ bin/pickle install memcach 标签:Pickle
python库。 资源全名:pickle-mixin-1.0.2.tar.gz
文章目录1.pickle 保存2.pickle 提取 1.pickle 保存 pickle 是一个 python 中, 压缩/保存/提取 文件的模块. 最一般的使用方式非常简单....wb 是以写的形式打开 ‘color.pickle’ 这个文件, 然后 pickle.dump 你要保存
对数据库操作.基本可以使用.只要去掉log方面东西. 博文链接:https://meizhini.iteye.com/blog/183479
pickle.dump(reviews_df, f, pickle.HIGHEST_PROTOCOL) # uid, iid pickle.dump(cate_list, f, pickle.HIGHEST_PROTOCOL) # cid of iid line pickle.dump((user_count, item_count, cate_count, example_count), ...
df = pd.read_pickle( output_file ) df=df[start_date:end_date] except FileNotFoundError: df = pdr.DataReader( stock_symbol, "yahoo", start_date, end_date ) df.to_pickle( output_file ) return df
我在使用python3.5处理一个序列化文件xxx.pk,不过这个.pk文件是我在python2.7...UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 11: ordinal not in range(128) 解决办法: import pickle
用于替换static文件夹
pickle.dumps("foobar") --- var somePickledData io.Reader mystring, err := stalecucumber.String(stalecucumber.Unpickle(somePickledData)) 读取一个腌制的整数 pickle.dumps(42) --- var somePickledData io....