【问题标题】:How to save multiple data at once in Python如何在 Python 中一次保存多个数据
【发布时间】:2020-06-12 07:46:04
【问题描述】:

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

在 Matlab 中,我只需将所有计算结果包含在一个结构中,以便稍后我可以加载 results.mat,并将我需要的所有内容存储为 results.output1、results.output2 或其他任何内容。与此等效的 Python 是什么?

特别是,我要保存的数据包括复数数组,这似乎给使用 json 之类的东西带来了困难。

【问题讨论】:

  • 请参阅Data Persistence 上的 Python 文档作为开始。请注意,如果不知道确切的限制,我们不能真正推荐特定的库。

标签: python saving-data


【解决方案1】:

我建议查看内置的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)

【讨论】:

    【解决方案2】:

    您可以在 Python 中使用 pickle 函数,然后使用 dump 函数将所有数据转储到文件中。以后可以重复使用这些数据。我建议你找到更多关于pickle的信息。

    【讨论】:

      【解决方案3】:

      我会推荐一个 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 中定义它:

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

      【讨论】:

      • “我要保存的数据包括复数数组” JSON 无法原生处理复数。
      • TypeError:复杂类型的对象不是 JSON 可序列化的
      • 啊。好的。这就是为什么我猜你早上 7 点不在 stackoverflow 上。
      猜你喜欢
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-29
      • 2012-08-18
      相关资源
      最近更新 更多