Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何保存已加载的模块?_Python_Module - Fatal编程技术网

Python 如何保存已加载的模块?

Python 如何保存已加载的模块?,python,module,Python,Module,我得到了一个模块stuff.py,里面有很多无组织的对象 import stuff myList = getattr(stuff, 'atomsList') myList.append ('protons') setattr(stuff, 'atomsList', myList) 我现在如何将stuff模块保存为stuff.py?我认为模块的想法是,它们是在一般意义上定义的,并且只有在以与类相同的方式“实例化”时才变得特定(并且您不能编辑源代码)。因此,除非您想直接编辑类,否则应该使用pi

我得到了一个模块
stuff.py
,里面有很多无组织的对象

import stuff

myList = getattr(stuff, 'atomsList')
myList.append ('protons')

setattr(stuff, 'atomsList', myList)

我现在如何将
stuff
模块保存为
stuff.py

我认为模块的想法是,它们是在一般意义上定义的,并且只有在以与类相同的方式“实例化”时才变得特定(并且您不能编辑源代码)。因此,除非您想直接编辑类,否则应该使用pickle保存实例化的类

我想你要的是泡菜

例如:

然后,要打开文件,请使用:

with open("instantiated_stuff.pickle", ‘rb’) as pickle_file:
    opend_stuff = pickle.load(pickle_file)

模块不是作为存储机制设计的。如果使用真正的序列化格式和单独的数据文件,您将有一个更干净的体验。您可以像其他人指出的那样查看搁置模块。python代码不打算修改模块。这在理论上是可以做到的,但自我修改代码确实不是一个好主意。要存储基于关键字的数据,您可以查看shelve,如果您想“传输”stuff中当前存在的所有数据,您可以编写一个单发脚本,循环通过
stuff
,并将每个项目写入shelve。之后,只需使用shelveConsider将数据存储为类的实例或字典。如果将其设置为
,还可以根据需要为其提供对其中的数据进行操作的方法。看见
with open("instantiated_stuff.pickle", ‘rb’) as pickle_file:
    opend_stuff = pickle.load(pickle_file)