#!/usr/bin/python3 """Like a mix of cat and tail -f.""" import os import sys import time def usage(retval): """Output a usage message.""" sys.stderr.write('Usage: {} --filename fn --prepend-time\n'.format(sys.argv[0])) sys.exit(retval) def main(): """Parse commandline options and act on them.""" prepend_time = False filename = None while sys.argv[1:]: if sys.argv[1] == '--prepend-time': prepend_time = True elif sys.argv[1] == '--filename': filename = sys.argv[2] del sys.argv[1] elif sys.argv[1] in ['-h', '--help']: usage(0) else: sys.stderr.write('{}: Unrecognized option: {}\n'.format(sys.argv[0], sys.argv[1])) usage(1) del sys.argv[1] if filename is None: sys.stderr.write('--filename is a required option\n') usage(1) blocksize = 2 ** 18 with open(filename, 'rb') as file_: while True: if prepend_time: for line in file_: timestamp = bytes(time.ctime(), 'UTF-8') os.write(1, timestamp + b' ' + line) else: block = file_.read(blocksize) if not block: time.sleep(10) continue os.write(1, block) main()