如何在文件中存储和检索 Python 本机数据结构?

2023-12-05

我正在读取 XML 文件并将所需数据重新组织为 Python 数据结构(列表、元组等)

例如,我的 XML 解析器模块之一会生成以下数据:

# data_miner.py
animals = ['Chicken', 'Sheep', 'Cattle', 'Horse']
population = [150, 200, 50, 30]

然后我有一个绘图仪模块,大致如下:

# plotter.py
from data_miner import animals, population

plot(animals, population)

使用这种方法,每次绘图时我都必须解析 XML 文件。我仍在测试程序的其他方面,并且 XML 文件目前没有那么频繁地更改。避免解析阶段将极大地缩短我的测试时间。

这是我想要的结果:
介于两者之间data_miner.py and plotter.py,我想要一个包含animals and population以便可以通过以下方式访问它们plotter.py本机(例如,绘图代码没有变化),无需运行data_miner.py每次。如果可能的话,它不应该在csv或任何 ASCII 格式,只是本机可访问的格式。plotter.py现在应该大致如下所示:

# plotter.py

# This line may not necessarily be a one-liner.
from data_file import animals, population

# But I want this portion to stay the same
plot(animals, population)

Analogy:
这大致相当于 MATLAB 的save将活动工作区的变量保存到.mat文件。我正在寻找类似的东西.matPython 的文件。

近期经历:
我见过pickle and cpickle,但我不确定如何让它发挥作用。如果这是正确的工具,示例代码将非常有帮助。可能还有其他我还不知道的工具。


The pickle模块,或其更快的等效模块cPickle,应该能很好地满足您的需求。

具体来说:

# data_miner.py
import pickle

animals = ['Chicken', 'Sheep', 'Cattle', 'Horse']
population = [150, 200, 50, 30]

with open('data_miner.pik', 'wb') as f:
  pickle.dump([animals, population], f, -1)

and

# plotter.py
import pickle

with open('data_miner.pik', 'rb') as f:
    animals, population = pickle.load(f)

print animals, population

在这里,我做了data_miner.py关于需要保存的内容非常明确(非常明确总是一个好主意,除非您有非常具体的理由要这样做)。有些东西(例如模块和打开的文件)无论如何都无法腌制,所以简单的腌制globals()行不通。

如果你绝对必须的话,你could复印一份globals()同时删除所有类型使其不适合保存的对象;或者,也许更好的是,虔诚地使用领先的_以你的每一个名字don't想要保存(所以import pickle as _pickle, with open ... as _f,等等)并从副本中排除globals()所有带有前导下划线的名称 == 使用这种方法,pickle.load将检索一个dict,然后通过索引从中提取感兴趣的变量。但是,我强烈推荐保存一个简单的替代方案list (or dict,如果你愿意的话;-) 与specific真正感兴趣的价值,而不是采取“批发”的方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在文件中存储和检索 Python 本机数据结构? 的相关文章

随机推荐

  • Node.js - 基本节点 Web 服务器不提供 Socket.io 客户端文件

    我对 Node js 和 Socket io 非常陌生 我已经构建了一个非常基本的 Web 服务器 但是在使用它时 我无法加载 socket io 客户端文件 我得到 404 我正在尝试使用这个客户端代码 我的理解是 Node 应该发现这个
  • 收到错误消息“无法加载资源:服务器响应状态为 404(未找到)”

    我有一个简单的 MVC Web 应用程序 三周前它在本地运行没有问题 当我现在在 Netbeans 中打开应用程序并运行它时 一切似乎都工作正常 但是 当我转到浏览器 在我的例子中是谷歌浏览器 查看应用程序的前端 位于http localh
  • 在python中使用pandas根据其他列中给出的值选择列

    我有一个数据框 a b c d 1 1 3 3 3 5 4 1 1 4 6 1 0 我想根据 a 列中给出的值选择列数 在这种情况下 对于第一行 它只会选择 b 列 我怎样才能实现类似的目标 df iloc column b number
  • awk 脚本,用于将不同文件中同一行中多次出现的字符串模式替换为与字符串匹配的数字

    我需要一个 awk 脚本来搜索 内的任何字符串 如果它找到之前未找到的字符串 则应将其替换为索引计数器的当前值 开头为 0 并递增计数器 如果它在 中发现它已经知道的字符串 它应该查找该字符串的索引并将其替换为索引 这应该在多个文件中完成
  • 如何在 Windows 中使用 glib/gtkmm 打开/生成文件

    我已经尝试过 GError pError NULL string uri g filename to uri file c str NULL pError if g app info launch default for uri uri c
  • PHP:让文件返回自己的目录

    我无法在在线服务器上找到正确的目录 是否有一个函数可以返回存储文件的文件夹 在 PHP gt 5 3 中使用 DIR 和使用前dirname FILE http php net constants predefine http php ne
  • 为什么 strcpy 采用 const char* 作为 src 而不是 char *?

    我实现了自己的 strcpys 来查找 src as const char 和 char 之间是否有任何区别 但没有发现以下 2 个之间有任何区别 并且两者的工作原理相同 char my strcpy char dest char src
  • 是否可以检查两组是否相等?

    如果我有一些像这样的 HTML b 1 i 2 i 3 b 以及以下正则表达式 lt gt gt lt gt gt 然后它会匹配 b 1 i 2 i 我希望它只匹配开始标签和结束标签相同的 HTML 有没有办法做到这一点 Thanks Jo
  • Javascript:for循环中定义的每个事件处理程序都是相同的,使用最后一次迭代的值

    我无法理解 Javascript 中的范围规则 在下面的示例中 我假设范围 url 变量在 for 循环中是私有的 并且 onload event 函数将看到这个私有实例 但事情似乎并非如此 警报将弹出最后一个网址两次 如果有人能澄清发生了
  • 在python中设置字典的属性

    是否可以从 python 中的字典创建一个对象 使得每个键都是该对象的一个 属性 像这样的东西 d name Oscar lastName Reyes age 32 e Employee d print e name Oscar print
  • 基于工作流状态的不同权限

    我需要根据对象的工作流程状态对对象设置不同的权限 例如 经理组 仅在状态 草稿时才可以编辑对象 但 超级经理组 在状态 已验证时也可以编辑对象 似乎不可能使用ir model access我正在评估是否可以使用ir rule 看来不是 有没
  • 来自数据库的 Primefaces 树

    我有以下实体类 Entity Table name THE TREE catalog schema dbo public class TheTree implements Serializable private static final
  • 使用 Photokit 编写带有元数据的照片

    我目前正在使用 ALAsset 框架将图像从照片库保存到带有元数据的文档目录 我使用的代码是 ALAssetsLibrary library ALAssetsLibrary alloc init autorelease library as
  • Rails-4,ExecJS::Pages 中的ProgramError#welcome

    我正在尝试向我的 Rails 应用程序添加登录 注销功能 为此我添加了bcryptgem 用于密码加密和访问控制器 现在 当我在本地运行它时 我收到一条错误消息 在添加上述功能之前 我的应用程序运行良好 错误信息 TypeError Obj
  • Android 中的 Activity 或 Fragment?

    我正在创建一个带有操作栏的应用程序 选项卡会转到不同的网页 当用户单击不同的选项卡时 我希望以前的选项卡网页保持相同的状态 即再次按下选项卡时不重新加载 最好的方法是什么 单独活动 碎片 一项活动中有多个网络视图 Thanks 使用 Act
  • 从 mod_rewrite 规则中排除图像

    我的 htaccess 脚本无意中更改了图像 URL 因此 URL 路径中包含 portfolio 的任何图像都会受到不利影响 有什么方法可以将图像从该特定规则中排除吗 redirect 301 sitemap xml http www e
  • WPF 中线程的非常基本的解释?

    我对 WPF 非常陌生 我在互联网上查找了一些有关线程的示例和教程 他们有自己的描述方式 但对于像我这样天真的人来说 我想以自己的方式去理解 我可以使用数据库更新功能开始我的第一个线程 这是场景 我有大量数据要插入数据库中 现在让我们假设以
  • flowjs:调用方法“join”。无法在混合上调用方法

    假设我有一个恒定的动物 我用它导入 import animals from animals 假设动物常数为 hoofed horses sheep goats feline lions tigers canine dogs wolves 假
  • 如何使用flask-admin编辑模型视图

    如何从flask admin的编辑页面使用generate password hash设置password hash 我在 python shell 中创建用户名和密码 密码经过哈希处理 admin add view MyModelView
  • 如何在文件中存储和检索 Python 本机数据结构?

    我正在读取 XML 文件并将所需数据重新组织为 Python 数据结构 列表 元组等 例如 我的 XML 解析器模块之一会生成以下数据 data miner py animals Chicken Sheep Cattle Horse pop