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.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: stream-redirect-0.1.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.7.6

File hashes

Hashes for stream-redirect-0.1.tar.gz
Algorithm Hash digest
SHA256 6a491c6dbfe3fc74880a6cc73d6a9e16d006baf2015affd1641599e8fb22da21
MD5 d949a313bed72ee650485a2baa10d75c
BLAKE2b-256 3e647be20d0417bfd1f9a3eede829a962064df6ebbea818ea2493badf3d15611

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stream_redirect-0.1-py3-none-any.whl
  • Upload date:
  • Size: 16.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.7.6

File hashes

Hashes for stream_redirect-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e0396c5030586cbba2388548a1bac3d4ce333cf26dd783ea0a86bd4df7bf8bdf
MD5 c1a44937ec6e24e0a391f665cd2510d0
BLAKE2b-256 c34d4a5918e9455aeaa2d811a6814550cc009a3218deb9721741596144185899

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