Detect last record in standard input (stdin) in python -


i reading input through stdin (hadoop streaming in reducer).

i need detect when last record comes in. running loop on stdin data.

i tried read stdin first calculate total records , again read proceed business processing, read record stdin calculate total_cnt records goes out stream , later when try read stdin processing there no record in stdin.

total_cnt = 0   line in stdin:       total cnt += 1  line in stdin:      ##some processing## 

i don't want store stdin somewhere , read data location twice (1. total record count , 2. data processing).

is there way can detect when last record comes in stdin?

i using python version 2.7.11 , need implement in approach in hadoop reducer.

process previous line each time take in new one. when loop exits, line have last, unprocessed line please.

example:

old_line = none line in range(10):     if old_line none:         old_line = line         continue  # skip processing on first loop: we'll make after     print "do stuff with: %i" % old_line     old_line = line print "double last line: %i" % (line*2) 

which gives:

do stuff with: 0 stuff with: 1 stuff with: 2 stuff with: 3 stuff with: 4 stuff with: 5 stuff with: 6 stuff with: 7 stuff with: 8 double last line: 18 

Comments

Popular posts from this blog

How to understand 2 main() functions after using uftrace to profile the C++ program? -

c# - Update a combobox from a presenter (MVP) -

How to put a lock and transaction on table using spring 4 or above using jdbcTemplate and annotations like @Transactional? -