tee

Contents

tee#

Prints arguments on screen and in file, like Unix/Linux tee utility.

This module was written by Matthias Cuntz while at Department of Computational Hydrosystems, Helmholtz Centre for Environmental Research - UFZ, Leipzig, Germany, and continued while at Institut National de Recherche pour l’Agriculture, l’Alimentation et l’Environnement (INRAE), Nancy, France.

copyright:

Copyright 2014-2022 Matthias Cuntz, see AUTHORS.rst for details.

license:

MIT License, see LICENSE for details.

The following functions are provided:

tee(*args, **kwargs)

Prints arguments on screen and in file, like Unix/Linux tee utility.

History
  • Written Oct 2014 by Matthias Cuntz (mc (at) macu (dot) de)

  • Allow that file keyword not given, Nov 2016, Matthias Cuntz

  • Make numpy doctsring format, Dec 2019, Matthias Cuntz

  • Code refactoring, Sep 2021, Matthias Cuntz

  • More consistent docstrings, Jan 2022, Matthias Cuntz

tee(*args, **kwargs)[source]#

Prints arguments on screen and in file, like Unix/Linux tee utility.

Calls print function twice, once with the keyword file and once without, i.e. prints on sys.stdout.

Parameters:
  • *args (iterable) – All arguments of the print function; will be passed to the print function.

  • **kwargs (dict) – All keyword arguments of the print function; will be passed to the print function.

  • file (object) – The file argument must be an object with a write(string) method. If it is not present or None, *args will be printed on sys.stdout only. Since printed arguments are converted to text strings, print() cannot be used with binary mode file objects.arguments.

Returns:

If file is given and not None, then print will be called with *args and **kwargs and a second time with the file keyword argument removed, so that *args will be written to sys.stdout. If file is not given or None, *args will only be written to sys.stdout, i.e. tee is a simple wrapper of the print function.

Return type:

None

Examples

>>> st = 'Output on screen and in log file'
>>> ff = 'tee_log.txt'
>>> f = open(ff, 'w')
>>> tee(st, file=f)
Output on screen and in log file
>>> f.close()
>>> f = open(ff, 'r')
>>> test = f.readline()
>>> f.close()
>>> print(test[:-1])  # rm trailing newline character
Output on screen and in log file
>>> import os
>>> os.remove(ff)
>>> f=None
>>> st = 'Output only on screen'
>>> tee(st, file=f)
Output only on screen
>>> tee(st)
Output only on screen