2013-12-19 156 views
0

My(python)应用程序将文件加载到内存中,并允许用户对数据进行增量编辑/保存。数据主要是键/值对,所以我正在考虑使用JSON来表示信息。应用程序将是用户访问数据的唯一方式,因此存储数据的确切格式仅由应用程序设计驱动。文件大小永远不会变得太大,所以内存不足并不是一个限制。每当用户决定“保存”时,是否有一种更好的将信息保存到磁盘的方法,而不是完全擦除旧文件并写入新数据?文件编辑和保存

回答

2

该对象必须转换为JSON并在每次要保存时写入磁盘。您可能需要调查shelve是否可以满足您的需求。你可以坚持使用字符串作为键的字典到磁盘,并根据需要更新特定键...

import shelve 
db = shelve.open('data.db') 
print db['keyname'] 
db['keyname'] = 'some new user data' 
db.sync() 
db.close() 

shelve主要优点是易于使用。缺点包括大文件访问速度慢,缺乏跨系统兼容性以及无法信任第三方来源的文件。因此,如果用户需要通过电子邮件向对方发送电子邮件或通过网络共享内容,那么shelve将不是一个安全的选择。

+0

这并不完全符合我的应用程序的需求,因为它不是跨平台兼容的。但是,我原来的问题仍然存在。有没有更好的方式将信息保存到磁盘上,而不是完全擦除旧文件并写入新数据? – Josh

+1

@Josh是的,数据库擅长这一点。 SQLite是“搁置”的替代方案。您可以将其用作关键值存储并仅更新已更改的记录。 – ChrisP

+0

感谢您的信息! – Josh

相关问题