问题标签 [shelve]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1814 浏览

python - 如何在函数中访问 Aʟʟ 全局变量?

我正在尝试模仿matlab加载和保存功能。我正在关注这个线程:搁置代码给出了 KeyError

它很聪明。但是,如果我在单独的模块中编写该代码,并尝试导入该模块并调用该函数,则它无法访问全局变量。

具体来说,我写了一个happy.py并在里面有函数:

当我尝试

它不会给出保存ab

这是因为global()不会给模块外的对象吗?那我该怎么做我想做的事呢?

0 投票
1 回答
41 浏览

tfs - TFS 搁置是与存储库版本相关的差异,还是它们是搁置的整个文件?

架子上的整个文件是否TFS都已更改,或者架子与特定版本的存储库相比是否有差异?如果它是第一个,那么它可以随时应用于任何版本。如果是第二个,它只能应用于特定版本的 repo。

0 投票
1 回答
7298 浏览

python - 为什么python中的搁置模块有时会创建具有不同扩展名的文件?

我正在运行一个 Python 程序,它shelve使用pickle. 运行这个程序后,有时我得到一个输出文件,a.data但有时我得到三个输出文件a.data.baka.data.dira.data.dat.

这是为什么?

0 投票
1 回答
1138 浏览

python - 如何强制python使用dumbdbm模块创建新数据库?

shelve模块是在模块之上实现的anydbm。该模块充当 4 种不同特定 DBM 实现的外观,它会在创建新数据库时选择第一个可用的模块,顺序如下:

  • dbhash (已弃用但仍是anydbm首选)。这是bsddb模块的代理,.open()真的bsddb.hashopen()

  • gdbm,用于 GNU DBM 库的 Python 模块,提供的功能比dbm与同一个库一起使用时模块所能提供的功能更多。

  • dbm,一个使用ndbmBSD DB 和 GNU DBM 库(在编译 Python 时选择)的代理模块。

  • dumbdbm,一个纯 python 实现。

但是在我的系统中,尽管dbhash出于某种原因我希望它只使用dumbdbm.

我怎样才能做到这一点?

0 投票
2 回答
3321 浏览

python - python的搁置模块有最大尺寸吗?

我在尝试打开超过一定大小的搁置持久文件时遇到此异常,该大小实际上非常小(< 1MB),但我不确定确切的数字在哪里。现在,我知道 pickle 有点像 python 的混蛋,而 shelve 并不被认为是一个特别强大的解决方案,但它恰好很好地解决了我的问题(理论上),我一直无法找到原因这个例外。

我可以始终如一地重现它,但我在谷歌上找不到太多。这是一个将重现的脚本。

0 投票
1 回答
7471 浏览

python - 搁置:不能腌制: 属性查找 builtins.method 失败

我正在使用搁置来存储一些数据。

我环顾四周,发现有关未绑定方法的内容可能会导致此问题,但我在代码中找不到问题。

问题出现在

player 是类实体:

这是类实体的代码:


在发布此内容之前,我尝试对 pudb 进行最后一次查看 - 而且我也遇到了错误

_

(在没有pudb的情况下运行代码时不显示)

这是世界:

这是类瓷砖:

最后,这是调用 shelve 的完整函数:

我相信这就是所有相关的代码。

是什么导致了这些错误?

0 投票
3 回答
7149 浏览

python - python中的搁置模块不起作用:“无法确定数据库类型”

我正在尝试用 Python 制作一个简单的密码存储程序,它看起来很简单,所以我想知道我是否使用搁置错误。

我有主要的 .py 文件:

另一个文件 passwords_dict.py 只是一个空字典。

但是当我尝试运行程序时,我得到了这个错误:

当我尝试改用 anydbm 时,我收到此错误:

当我尝试改用 dbm 时,我收到此错误:

我究竟做错了什么?是否有另一种存储字典的方法,并且仍然能够使用用户输入(而不是整个字典,我想这就是 pickle 所做的)来提取键?

0 投票
1 回答
125 浏览

python - Shelve causes pygame fatal error?

I have made a simple racing game in python with pygame, easygui, and shelve. I finished the game and it worked great both from idle and from my .desktop file. After that i decided to attempt to add a highscore system. The system works great from idle, but from the .desktop file i get an error "fatal python error: (pygame parachute) segmentation fault." I would really like to leave the highscore system in the game so any help would be appreciated.`

`

0 投票
1 回答
1305 浏览

python - 带有搁置的两个键的 Python 字典

我想使用搁置存储一个大字典。更具体地说,我所拥有的是一本字典,比如一个矩阵:

键的数量约为 5.000,这使得 5.000x5.000 个元素的矩阵无法存储在我的 4Gb 内存中。出于这个原因,我认为搁置可能是一个很好的解决方案。

尽管如此,我还没有找到任何关于如何有效地构建字典的文档。

到目前为止,我所做的是使用 shelve 创建一个包含常规字典的字典:

这行得通,但似乎应该有更好的方法来充分利用搁置。有任何想法吗?

0 投票
1 回答
656 浏览

python - python load from shelve - 我可以保留变量名吗?

我正在自学如何用 python 编写一个基本的游戏(基于文本 - 不使用 pygame)。(注意:我实际上并没有真正进入“游戏”部分,因为我想确保我首先弄清楚了基本的核心结构。)

我正试图弄清楚如何实现保存/加载场景,以便游戏会话可以在程序的信号运行之后持续存在。我做了一些搜索,一切似乎都指向酸洗或搁置是最好的解决方案。

我的测试场景是保存和加载一个类的单个实例。具体来说,我有一个名为 Characters() 的类,并且(为了测试)将该类的一个实例分配给一个名为 pc 的变量。Character 类的实例有一个名为 name 的属性,该属性最初设置为“DEFAULT”,但会在新游戏初始设置时根据用户输入进行更新。例如:

我还拥有(或将拥有)大量函数,这些函数使用分配给它们的变量来引用各种实例。例如,一个简单的例子可能是:

我计划有一个保存功能,它将用他们当前的信息(例如:更新的名称)打包 pc 实例(以及其他信息)。我还将有一个加载功能,允许用户玩一个保存的游戏而不是开始一个新游戏。根据我的阅读,负载可以像这样工作:

我的问题是,有没有办法让搁置加载“记住”与实例关联的变量名,并自动执行 << pc = mysave["pc"] >> 步骤?或者让我将该变量名称存储为字符串(例如作为键)并以某种方式使用该字符串创建具有正确名称(pc)的变量?

我将需要“保存”很多实例,并且可以通过循环自动执行该过程,但我不知道如何自动卸载到特定的变量名。我真的必须单独明确地重新分配每个人吗?我需要将实例分配回适当的变量名,因为我有一堆核心函数,它们使用变量名引用特定实例(如我上面给出的示例)。

想法?这是可能的,还是我没有看到完全不同的解决方案?

谢谢!

~肋骨