0

我有一个应用程序,它只想序列化以下类/函数:没有 Python 原始数据类型没有 Numpy 数据类型没有 pandas 数据类型。

那么,是否可以过滤要保存在 dill 中的对象?(按类型循环过滤)

谢谢,

4

1 回答 1

2

虽然这不是一个完整的解决方案(即,您可能希望包含更多具有pandas数据类型、数据类型的模块……而且您可能希望通过过滤而不是模块numpy来对内置类型更具选择性)……type我认为它可以让你得到你想要的。

>>> import dill
>>> import numpy
>>> import pandas
>>> 
>>> target = numpy.array([1,2,3])
>>> dill.dumps(target) if not dill.source.getmodule(type(target)) in [numpy, pandas.core.series, dill.source.getmodule(int)] else None
>>> 
>>> target = [1,2,3]             
>>> dill.dumps(target) if not dill.source.getmodule(type(target)) in [numpy, pandas.core.series, dill.source.getmodule(int)] else None
>>> 
>>> target = lambda x:x   
>>> dill.dumps(target) if not dill.source.getmodule(type(target)) in [numpy, pandas.core.series, dill.source.getmodule(int)] else None
>>> 
>>> class Foo(object): 
...   pass
... 
>>> target = Foo()     
>>> dill.dumps(target) if not dill.source.getmodule(type(target)) in [numpy, pandas.core.series, dill.source.getmodule(int)] else None
'\x80\x02cdill.dill\n_create_type\nq\x00(cdill.dill\n_load_type\nq\x01U\x08TypeTypeq\x02\x85q\x03Rq\x04U\x03Fooq\x05h\x01U\nObjectTypeq\x06\x85q\x07Rq\x08\x85q\t}q\n(U\r__slotnames__q\x0b]q\x0cU\n__module__q\rU\x08__main__q\x0eU\x07__doc__q\x0fNutq\x10Rq\x11)\x81q\x12}q\x13b.'
>>> 

但是,如果您问是否dill有这样的过滤方法,那么答案是否定的。

于 2016-12-20T21:45:21.570 回答