- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
是否可以在Python中深度复制搁置对象?当我尝试深度复制它时,出现以下错误:
import shelve,copy
input = shelve.open("test.dict", writeback=True)
input.update({"key1": 1, "key2": 2})
newinput = copy.deepcopy(input)
>> object.__new__(DB) is not safe, use DB.__new__()
这是否意味着书架不可复制?
编辑:如果我详细说明我的问题可能会更好:我将一个大字典作为搁置对象,并且我想将整个搁置对象(=到目前为止我生成的所有键、值对)保存到一个单独的文件,同时我不断向原始字典添加新项目。
也许我可以首先同步搁置并显式地将搁置文件复制到磁盘上,但我不喜欢这种方法。
最佳答案
不,我不认为它们是可复制的(除非你猴子修补类或转换成字典)。原因如下:
copy.copy()
和copy.deepcopy()
调用__copy__()
和__deepcopy__()
不依赖于“标准”类型的实例的方法(即 atomic
、 list
、 tuple
和 instance methods
)。如果该类没有这些属性,则会回退到 __reduce_ex__
和__reduce__
。 (请参阅来源中的 copy.py
)
不幸的是,搁置对象Shelf
基于UserDict.DictMixin
它没有定义 copy()
(Shelf
也没有):
class DictMixin:
# Mixin defining all dictionary methods for classes that already have
# a minimum dictionary interface including getitem, setitem, delitem,
# and keys. Without knowledge of the subclass constructor, the mixin
# does not define __init__() or copy(). In addition to the four base
# methods, progressively more efficiency comes with defining
# __contains__(), __iter__(), and iteritems().
将问题提交到搁置模块错误跟踪器可能是个好主意。
关于python - 如何在Python中深度复制搁置对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19584912/
嗨,这是我的搁架条目结构 { 'Birds' : { 'BlueOnes': ["detailsAboutBlueBird"], 'RedOnes' : ["d
是否可以对已打开的文件使用搁置?我想执行如下操作,但 shelve.open 不接受文件描述符。 f = open('file.shelve') s = shelve.open(f) 最佳答案 搁
搁置 documentation说: The choice of which database package will be used (such as dbm, gdbm or bsddb) de
我正在使用 Pycharm。首先,无论何时在 Pycharm 中导入任何模块。完整的导入行淡出。但如果 import shelve 不会淡出。此外,当我运行该文件时,出现以下错误: Traceback
我已搁置文件a.txt, b.txt, c.txt . 现在我想对 a.txt 和 b.txt 进行一些更改,并与新文件 d.txt 一起搁置。 所以, 第一步,使用 p4 unshelve -s
我有一个包含大量文件的更改列表。我必须处理其他请求,所以我使用 p4 shelve -c 899 搁置了更改.但是当我打开 p4 时,文件仍然显示在工作区中。 由于数量很大,我想一次还原所有文件。我试
我在 Python 中使用 Shelve 时遇到问题: In [391]: x Out[391]: {'broken': {'position': 25, 'page': 1, 'letter': '
我正在尝试将一个字典的字典添加到搁置文件中: >>> d = shelve.open('index.shelve') >>> d >>> print(list(d.keys())) [] >>> d
我创建了一个名为 foo_module.py 的文件,其中包含以下代码: import shelve, whichdb, os from foo_package.g import g g.shelf
我是 Team Foundation Server 的新手,所以我想知道“搁置待处理更改”在 Team Foundation Server 中的作用是什么。我正在 Codeplex 上使用项目的 TF
我正在从 .nib 文件创建 .strings。也就是说,我正在将 .nib 文件更改为 Xcode 9.2 上的本地化字符串文件。 现在我得到了 .strings 文件,其中包含所有需要的字符串和根
我使用 Git 进行版本控制,Android Studio 与它很好地集成,非常喜欢! 但现在,我做了“VCS->搁置更改...” 然后 POOF,他们不见了。我以为我需要使用存储,但后来我想让我们看
我使用搁置看到了这种行为: import shelve my_shelve = shelve.open('/tmp/shelve', writeback=True) my_shelve['a'] =
我正在使用 shelve 来存储一些数据。 Traceback (most recent call last): File "rogue.py", line 312, in curs
我是一名优秀的程序员,十分优秀!