怎么把词典存储到文件中?

2024-04-26 22:55:23 发布

您现在位置:Python中文网/ 问答频道 /正文

一般来说,我对python和编码还比较陌生。 我正在为俄罗斯社交网络(vk)写我自己的聊天统计机器人。通信)。在

我的问题是我能把字典存储在一个文件中并使用它吗?在

例如:

Userlist=open('userlist.txt', '+')
If lastmessage['uid'] not in Userlist.read():
     Userlist.read()[lastmessage.'uid']=1
Userlist.close()

还是必须使用JSON之类的辅助模块?在

谢谢你


Tags: 文件网络txt编码readuid字典机器人
1条回答
网友
1楼 · 发布于 2024-04-26 22:55:23

(根据说明性的评论,错误回答:在while true循环中,如果用户的id在“userlist”字典中(作为键),如果不在,则将其添加到该字典中,值为1。然后我想用新字典重写这个文件。程序一启动,文件即被打开,在循环之前:

为了像字典一样可靠地使用磁盘上的数据,您应该考虑使用dbm模块之一,或者只使用SQLite3支持。在

一个dbm文件仅仅是一组键和值的集合,这些键和值通过透明的维护和使用的索引来存储。打开dbm文件后,只需像使用其他Python字典一样使用它(字符串作为键)。在关闭文件之前,可以简单地刷新和写入任何更改。这非常简单,尽管它没有提供用于锁定(或者在可能有多个进程同时写入文件的情况下管理一致性)等特殊功能。在

{a3}在另一方面,你可以很容易地将一个强大的数据库管理系统^作为一个强大的SQL管理子系统。。。你可以从基于客户机/服务器的系统中获得所有特性(外键、数据类型和引用完整性约束管理、视图和触发器、索引等)。在

在您的例子中,您可以简单地拥有一个包含单个列的表。绑定到该数据库(通过其文件名)将允许您使用SELECT查询用户名,并使用INSERT添加用户名。随着应用程序的增长和更改,您可以添加其他列来跟踪帐户的创建时间、最近使用或检查的时间(几个时间/日期戳列),还可以使用相关数据创建其他表(例如,使用联接选择)。在

(原答案):

一般来说,将任何内部数据结构存储为文件或通过网络连接传输的处理称为“序列化”。加载或接收此类数据并将其内容实例化为新数据结构的补充过程称为“反序列化”

所有编程语言都是这样。在

在Python中有很多方法可以序列化和反序列化数据。特别是我们有本机(标准库)pickle模块,它生成的文件(或字符串)只用于运行Python的其他进程,或者,正如您所说,我们可以使用JSON。。。JavaScript对象表示法已经成为事实上的跨语言数据结构序列化标准。(还有其他的,比如YAML和XML。。。但JSON已经占据了主导地位)。在

关于使用JSON与Pickle的警告是JavaScript(以及其他一些编程和脚本语言)对某些类型的“dictionary”(关联数组)键使用的语义与Python不同。特别是Python(以及Ruby和Lua)将诸如“1”(包含数字“1”的字符串)和1或1.0(数值等于1)之类的键视为不同的键。JavaScript、Perl和其他一些工具将键视为“标量”值,其中“1”和数字1之类的字符串将计算为同一个键。在

还有一些其他细微差别可能会影响序列化的保真度。但这是最容易理解的。以字符串作为键的字典是可以的。。。使用JSON序列化/反序列化代替pickle时,最有可能导致数字键和字符串键的混合。在

相关问题 更多 >