仅分析唯一行的fifo输出

2024-09-30 22:11:19 发布

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

python新手。在

我正在尝试解析一个奇怪的fifo的输出,但很难搞清楚。基本上我有:

fifoopen = open("./foo/fifoA")
while True:
    line = fifoopen.readline()
print line

它工作正常,并打印fifo的输出,因为它是由另一端的应用程序输入的。但是,该应用程序会随机地向fifo发送重复或三倍的行。所以我正在寻找如何解析fifo输出的建议,以便只打印新的、唯一的行。在

我很感激你的帮助

-唐


Tags: true应用程序readlinefoolineopen建议fifo
2条回答

itertools documentation的配方就是这样:

def unique_justseen(iterable, key=None):
    "List unique elements, preserving order. Remember only the element just seen."
    # unique_justseen('AAAABBBCCDAABBB')  > A B C D A B
    # unique_justseen('ABBCcAD', str.lower)  > A B C A D
    return imap(next, imap(itemgetter(1), groupby(iterable, key)))

虽然作为生成器表达式可能更易读:

^{pr2}$

您可以这样使用:

for line in unique_justseen(fifoopen):
   print line

你只对消除连续的重复感兴趣吗?或者有什么复制品?如果有重复,我建议保留一组以前看到的行;否则,保留最后一行的副本就足够了。无论哪种情况,如果(新行)==(旧行),则跳过它。在

相关问题 更多 >