在python中,如何正确使用队列?

时间:2014-02-07 08:27:51

标签: python python-3.x

到目前为止,我有以下内容:

fnamw = input("Enter name of file:")
def carrem(fnamw):
    s = Queue( )
    for line in fnamw:
        s.enqueue(line)
    return s

 print(carrem(fnamw))

上面没有打印我输入的文件中的数字列表,而是获得以下内容:

<__main__.Queue object at 0x0252C930>

2 个答案:

答案 0 :(得分:1)

打印Queue时,您只是直接打印对象,这就是您获得该结果的原因。

您不想打印对象表示,但我假设您要打印队列的内容。为此,您需要调用队列的get方法。值得注意的是,这样做会耗尽队列。

print(carrem(fnamw))替换print(carrem(fnamw).get())应该打印队列的第一项。

如果您真的只想打印队列中的项目列表,您应该只使用一个列表。如果您正在寻找FIFO(先进先出)数据结构,那么队列就是特定的。

答案 1 :(得分:1)

在我看来,您实际上并不需要该程序中的QueueQueue主要用于多线程编程中的同步和数据传输。而且这似乎并不像你想要做的那样。

对于您的使用,您也可以使用普通的Python列表:

fnamw = input("Enter name of file:")
def carrem(fnamw):
    s = []
    for line in fnamw:
        s.append(line)
    return s

print(carrem(fnamw))

然而,在同样的说明中,您实际上并没有阅读该文件。引用它的程序将简单地将文件名中的每个字符作为其自己的帖子放入列表(或队列)中。你真正想要的是:

def carrem(fnamw):
    s = []
    with open(fnamw) as fp:
        for line in fp:
            s.append(line)
    return s

或者,甚至更简单:

def carrem(fnamw):
    with open(fnamw) as fp:
        return list(fp)