用pickle或dill保存类数据

2024-10-04 05:26:31 发布

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

我想将poll类数据的状态保存到文件中,如果脚本重新启动,就重新加载它。我弹出了部分程序来复制这个问题。这是我的档案。在

pickleclass.py

#POLL RECORD
class POLL:
  title = ''
  votes = {}
  duration = 0
  secenekler = 0
  sure = ""
  polltype = -1 # -1 initial, 0 = %, 1 = Sayi
  chat_id = None
  message_id = None

  def reset():
    POLL.title = ''
    POLL.votes.clear()
    POLL.duration = 0
    POLL.secenekler = 0
    POLL.sure = ""
    POLL.polltype = -1
    POLL.chat_id = None
    POLL.message_id = None

fxns.py公司

^{pr2}$

保存.py

import pickleclass as pk
import fxns as fxn
Poll_file = "p.dump"

poll = pk.POLL

poll.title = "TEST TITLE"
poll.votes['VOTE 1'] = 1
poll.votes['VOTE 2'] = 2
poll.votes['VOTE 3'] = 3

poll.duration = 0.4
poll.secenekler = 1
poll.sure = "23:55"
poll.polltype = 1
poll.chat_id = 112431
poll.message_id = 324

print("-"*55)
print("-"*55)
bozo = vars(poll)
for key in bozo.keys():
    print(key, "=", bozo[key])

print("-"*55)
fxn.save_to_file(poll, Poll_file)

我先打电话保存.py创建类并保存它。它成功地结束了。在保存.py我在下面打电话给你加载.py加载保存的内容。但它加载空的类数据。因为它是新创建的。 的输出保存.py文件如下:

('reset', '=', <function reset at 0x7f4485277758>)
('__module__', '=', 'pickleclass')
('sure', '=', '23:55')
('secenekler', '=', 1)
('title', '=', 'TEST TITLE')
('__doc__', '=', None)
('votes', '=', {'VOTE 2': 2, 'VOTE 3': 3, 'VOTE 1': 1})
('polltype', '=', 1)
('chat_id', '=', 112431)
('duration', '=', 0.4)
('message_id', '=', 324)

加载.py

import pickleclass as pk
import fxns as fxn
Poll_file = "p.dump"

zozo = fxn.load_from_file(Poll_file)
zozo = vars(zozo)

for key in zozo.keys():
    print(key, "=", zozo[key])
print("-"*55)
print("-"*55)

当我加载文件并显示输出时,它是空的,如下所示。在

('reset', '=', <function reset at 0x7f8e99907758>)
('__module__', '=', 'pickleclass')
('sure', '=', '')
('secenekler', '=', 0)
('title', '=', '')
('__doc__', '=', None)
('votes', '=', {})
('polltype', '=', -1)
('chat_id', '=', None)
('duration', '=', 0)
('message_id', '=', None)

我找不到问题所在。它加载类,但不加载数据。在


Tags: keypynoneidtitlefiledurationprint
1条回答
网友
1楼 · 发布于 2024-10-04 05:26:31

加载执行正确:问题来自于没有正确实现的类。在

看看some material on classes and instances(或一些文章on SO),尤其是__init__函数,self,以及实例和类成员等概念(另请参阅that post中一个密切相关的问题)。在

然后看看^{}是如何处理类的,您应该可以开始了。在

编辑显然用dill这实际上应该是可能的,参见this SO post

相关问题 更多 >