将队列保存到Fi

2024-04-19 15:38:08 发布

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

我的目标是有一个文本文件,它允许我将数据追加到末尾,并从文件中检索和删除第一个数据条目。实际上,我想使用文本文件作为队列(先进先出)。我想了两种方法来实现这一点,但我不确定哪种方法更像Python,更有效。第一种方法是使用json库。在

import json

def add_to_queue(item):
    q = retrieve_queue()
    q.append(item)
    write_to_queue(q)


def pop_from_queue():
    q = retrieve_queue()
    write_to_queue(q[1:])
    return q[0]


def write_to_queue(data):
    with open('queue.txt', 'w') as file_pointer:
        json.dump(data, file_pointer)


def retrieve_queue():
    try:
        with open('queue.txt', 'r') as file_pointer:
            return json.load(file_pointer)
    except (IOError, ValueError):
        return []

看起来很干净,但是每次写/读时都需要对所有json数据进行序列化/反序列化,尽管我只需要列表中的第一项。在

第二个选项是调用readlines()writelines()来检索和存储文本文件中的数据。在

^{pr2}$

这两种方法都很好,所以我的问题是:实现“文本文件队列”的推荐方法是什么?使用json是否比自己读写文件“更好”(更Pythonic/faster/more memory efficient)?基于问题的简单性,这两个解决方案似乎都相当复杂;我是否错过了一个更明显的方法来实现这一点?在


Tags: to数据方法jsondatareturn队列queue