Skip to main content

Collect and redirect stdout and stderr from a python program

Project description

Check Pull Request

stdout_redirect

What?

A Python library to collect and redirect code from stdout (and/or stderr) and collect it into program-accessible locations.

Tested and working on Linux, Mac OS, and Windows!

How?

pip install -U stream-redirect

from stream_redirect import Redirect

r = Redirect(stdout=True, stderr=True)
with r:
    print("This will be captured")
    os.system("echo This will also be captured")
    some_c_module.method_that_writes("This willl be, too")

print("Captured stdout: ", r.stdout)
print("Captured stderr: ", r.stderr)

Construction

Redirect accepts three arguments:

  • stdout - Default True. Capture stdout to the "stdout" property
  • stderr - Default False. Capture stderr to the "stderr" property
  • python_only - Default False. Only capture the output of Python code and not the output of system calls and C libraries. This behavior mimics the built in context manager (discussed below) and is useful when you just want to drop in this to replace that one in versions of Python where it doesn't exist

Usage

If you only want to silence output you can do

with Redirect():
   pass

However, if you wish to inspect the results of the run, you need to create and read the context manager outside of the with invocation, as the object created during the call is only accessible within the body of the with block.

Why?

Isn't there already a standard module for this?

It's true that the standard library includes a context decorator that already redirects stdout for most normal uses. But this is not sufficient. It fails on at least a few scenarios.

It is new

The built-in module won't help you on Python 2.7 or Python 3.0-3.3 (where it does not exist).

This module will do so

It doesn't capture system calls

The above module doesn't capture system calls

In [1]: import io, os, contextlib

In [2]: s = io.StringIO()

In [3]: with contextlib.redirect_stdout(s):
   ...:     os.system("echo Hello world")
   ...:
Hello world

In [4]: print("Captured output: ", s.getvalue())
Captured output:

This module will do so

It doesn't capture output from the C library

If an extension module written in C writes output, the built-in context wrapper will not capture it.

This module will do so

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stream-redirect-0.1.1.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

stream_redirect-0.1.1-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file stream-redirect-0.1.1.tar.gz.

File metadata

  • Download URL: stream-redirect-0.1.1.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6

File hashes

Hashes for stream-redirect-0.1.1.tar.gz
Algorithm Hash digest
SHA256 89e28af6f6e07e714c16d5b8969f3955f3ed861361d67ced1735b4b9a617d549
MD5 c219aafab4de045c494bcb7e5b48ea5c
BLAKE2b-256 0a7c654bbe807c1929f1092bcde4e919a6132c99f277aad9698b24040f609383

See more details on using hashes here.

File details

Details for the file stream_redirect-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: stream_redirect-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 16.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6

File hashes

Hashes for stream_redirect-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5c817bc07da094cc99cdc81610fe86313f05fcbda32ab52931a6d702e987cde5
MD5 906abab843e56aae4fea76d6539bd8a5
BLAKE2b-256 101ea488929380d63cfaf938e991935a4c8ab57f6dffe08ca216a2b61d551cf2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page