【问题标题】:Most efficient way to handle lists saved in a file python3处理保存在文件python3中的列表的最有效方法
【发布时间】:2019-04-05 20:31:50
【问题描述】:

我一直在 Google 和 stackoverflow 中寻找信息,但没有找到好的解决方案。

我需要处理一个列表,添加元素,删除元素......但保存在一个文件中。这是为了避免在执行完成时丢失列表,因为我需要定期执行我的 python 脚本。以下是我找到的替代方案,但它们存在一些问题

  • 搁置模块:找不到如何删除列表中的元素(例如list.pop())而不是删除所有列表。
  • pprint.pformat() : 修改信息,我需要删除所有文档并保存修改后的信息,非常低效。
  • json: tedioos 只是一个列表,似乎不能解决我的问题

那么,什么是处理列表的最佳方式,就像mylist.pop() 以有效的方式将更改保存在文件中一样简单?

【问题讨论】:

  • 你可以试试pickle,但如果修改频繁,也许你应该使用数据库,而不是文件。
  • 这就是问题所在,修改频率高达每小时 10 次。我不考虑使用数据库,很好
  • 打开文件,读入列表,操作列表,保存列表到文件中。取决于文件的大小需要几毫秒或更长的时间。请参阅docs.python.org/3/tutorial/… - 如果您愿意,您可以使用 csv-module 存储您的列表 - 它也可以处理 excaping textstrings。
  • ps: - 将内容保存在文件中和执行是矛盾的。文件是流,你需要寻找,IO 开始很慢。每小时一分钟 10 次,你在说什么大小的列表? 1k 项? 10 万件物品?百万?
  • 不多,30k 项。我将阅读列表,修改它并再次保存,每天只修改我的代码一次。使用数据库会使项目复杂化,而不是必要的。谢谢大家,我想我可以结束这个问题了,因为所有的替代方案都已经暴露出来了,有利有弊

标签: json python-3.x shelve pprint


【解决方案1】:

由于以前从未有人回答过此问题,因此这是一种有效的方法。包pysos 可以在恒定时间内处理带有插入/删除的磁盘支持列表。

pip install pysos

代码示例:

import pysos

db = pysos.List('somefile')
db.append('saved in the file 0')
db.append('saved in the file 1')
db.append('saved in the file 2')

print(db[1]) # => 'saved in the file 1'

del db[1]

print(db[1]) # => 'saved in the file 2'

【讨论】:

    猜你喜欢
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 2019-07-30
    • 2013-08-05
    相关资源
    最近更新 更多