在python中检测标准输入(stdin)中的最后一条记录

2024-06-17 08:06:07 发布

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

我正在通过stdin(reducer中的hadoop流)读取输入。在

我需要知道最后一张唱片什么时候进来。我正在对stdin数据运行for循环。在

我试图先读取stdin以计算总记录数,然后再次读取以继续进行业务处理,但是当我从stdin读取一条记录时 要计算total_cnt,那么记录将从流中传出,稍后当我试图读取stdin进行处理时,stdin中没有记录。在

total_cnt = 0 

for line in stdin:  
    total cnt += 1

for line in stdin:  
   ##Some Processing##

我不想将stdin存储到某个地方并从该位置读取两次数据(1。总记录计数和2。数据处理)。在

有什么方法可以检测到最后一条记录是何时从stdin进来的吗?在

我使用的是Python2.7.11版,需要在Hadoop reducer中实现这一点。在


Tags: 数据inhadoopfor地方stdin记录line
1条回答
网友
1楼 · 发布于 2024-06-17 08:06:07

每次接收新的行时处理上一行。当循环退出时,line将有最后一行未处理的内容。

示例:

old_line = None
for line in range(10):
    if old_line is None:
        old_line = line
        continue  # skip processing on the first loop: we'll make it up after
    print "Do stuff with: %i" % old_line
    old_line = line
print "Double last line: %i" % (line*2)

它给出了:

^{pr2}$

相关问题 更多 >