如何修改模块中的变量和实例,并在运行时将其保存在python中
我有如何修改模块中的变量和实例,并在运行时将其保存在python中,python,module,runtime,Python,Module,Runtime,我有main.py,header.py和var.py 标题.py var.py main.py 在这一切之后,我的意思是在这个节目结束之后。我希望var.table和var.month被修改并保存在var.py中 在python中处理引用太令人困惑了 我错过了C&pointer。当程序结束时,所有值都将丢失,除非您先保存它们,然后在下次运行时加载它们。有多种不同的方法可以做到这一点;你想要哪一个取决于你拥有什么样的数据以及你在用它做什么 你永远不想做的一件事就是将任意对象打印到一个文件中,然后试
main.py
,header.py
和var.py
标题.py
var.py
main.py
在这一切之后,我的意思是在这个节目结束之后。我希望var.table
和var.month
被修改并保存在var.py
中
在python中处理引用太令人困惑了
我错过了C&pointer。当程序结束时,所有值都将丢失,除非您先保存它们,然后在下次运行时加载它们。有多种不同的方法可以做到这一点;你想要哪一个取决于你拥有什么样的数据以及你在用它做什么 你永远不想做的一件事就是将任意对象打印到一个文件中,然后试着找出以后如何解析它们。如果您的任何问题的答案是
ast.literal\u eval
,则您保存的内容是错误的
要考虑的一件重要事情是你什么时候存钱。如果有人用^C退出您的程序,而您只在完全关闭时保存,则您所做的所有更改都将消失
努比/熊猫
Numpy和Pandas有自己的内置功能来保存数据。有关所有选项,请参见和,但基本选项包括:
- 文本(例如):可移植格式,可在电子表格中编辑
- 二进制(例如):小文件,快速保存和加载
- Pickle(参见下文,但也包括内置函数):可以使用任意Python对象保存数组
- 。如果您需要HDF5或NetCDF,您可能已经知道您需要它
json
库,但这需要做一些工作
是(几乎)JSON的超集,更易于扩展,并允许更漂亮的人类可编辑文件。它在标准库中没有内置支持,但在PyPI上有许多实体库,如
JSON和YAML只能为每个文件保存一个dict或列表。(该库将允许您保存多个对象,但您无法将其加载回去,因此请小心。)最简单的方法是创建一个包含所有数据的大目录或列表。但是,它允许您在一个文件中保存多个JSON dict,而代价是人为的可读性。您可以通过为文件中的行加载它:obj=json.loads(obj)
,如果您知道自己在做什么,您可以使用标准库保存它,但您也可以找到愿意为您这样做的第三方库
键值存储
如果您想要存储的内容适合于dict,但您希望它一直保存在磁盘上,而不是显式地保存和加载,那么您需要一个键值存储
是一种旧的但仍然是函数格式,只要您的键和值都是小字符串,并且没有太多的字符串。Python使dbm
看起来像dict
,因此您根本不需要更改大部分代码
扩展dbm
以允许您保存任意值,而不仅仅是字符串。它通过使用Pickle(见下文)来实现这一点,这意味着它具有相同的安全问题,而且速度也可能较慢
更强大的键值存储(以及相关的东西)通常称为NoSQL数据库。现在有很多;是一种流行的选择。还有很多东西要学,但值得一学
CSV
表示“逗号分隔值”,尽管也有使用空格或其他字符的变体。CSV是
只要所有成员都是字符串或数字,当您有一个具有相同字段的对象列表时,这是一种很好的格式。但不要试图把它延伸到那之外
CSV文件只能作为文本进行人工编辑,但可以在Excel或Google Sheets等电子表格程序中轻松编辑
泡菜
设计用于保存和加载任何内容。如果您正在读取用户提供的任意pickle文件,这可能会很危险,但也可能非常方便。Pickle实际上无法保存和加载所有内容,除非您做了大量工作来添加对某些类型的支持,但是有一个名为的第三方库,它将支持扩展了很多
Pickle文件根本不是人类可读的,并且只与Python兼容,有时甚至与Python的旧版本也不兼容
SQL
最后,您可以始终构建完整的关系数据库。这听起来很可怕
Python在标准库中有一个名为Build的数据库
如果看起来太复杂,你可能需要考虑一下,它可以让你存储和查询数据而不必学习SQL语言。或者,如果你四处搜索,就会发现有很多fanc
import var
class table():
def __init__(self, name):
self.name = name
month = "jen"
table = "" # tried to make empty container which can save table instance but don't know how
import header
import var
var.table = header.table(var.month)
var.month = "feb"