如何在 Python 中一次保存多个数据

How to save multiple data at once in Python

我正在 运行 编写一个脚本,它需要一个小时来生成我想要的数据。我希望能够将所有相关变量保存到某个外部文件中,这样我以后就可以 fiddle 使用它们,而不必再次 运行 长达一小时的计算。有没有一种简单的方法可以将我需要的所有变量保存到一个方便的文件中?

在 Matlab 中,我会将所有计算结果包含在一个结构中,这样以后我就可以加载 results.mat,我会将我需要的所有内容存储为 results.output1、results.output2管他呢。 Python 相当于什么?

特别是,我想保存的数据包括复数数组,这似乎给使用 json.

之类的东西带来了困难

您可以在Python中使用 pickle 函数,然后使用 dump 函数将所有数据转储到一个文件中。您可以重复使用数据 later.I 建议您查找有关 pickle 的更多信息。

我会推荐 json 文件。使用 json,您可以将变量分配给关键字,就像库存词典 python 一样。安装 python 时会自动安装 json 软件包。

import json

dict = {var1: "abcde", var2: "fghij"}
with open(path, "w") as file:
    json.dump(dict, file, indent=2, ensure_ascii = False)

您也可以使用相同的 api:

从文件中加载它
with open(path, r) as file:
    text = file.read()

dict = json.loads(text)

编辑:Json 也可以处理每个数据类型 python 可以,所以如果你想保存一个数组,你可以在字典中定义它:

dict = {list1: ["ab", "cd", "ef"]}

我建议查看内置的 shelve module,它提供 持久的、类似字典的对象 ,并且通常适用于所有本机 Python 类型,因此你可以这样做:

complex 写入键 n 下的某个文件(在我的示例中它被命名为 mydata)(请记住键应该是字符串)。

import shelve
my_number = 2+7j
with shelve.open('mydata') as db:
    db['n'] = my_number

稍后从给定文件中检索该号码

import shelve
with shelve.open('mydata') as db:
    my_number = db['n']
print(my_number)  # (2+7j)