Home > Backend Development > Python Tutorial > How to Capture Standard Output in Python Scripts?

How to Capture Standard Output in Python Scripts?

Patricia Arquette
Release: 2024-10-17 14:57:02
Original
1021 people have browsed it

How to Capture Standard Output in Python Scripts?

Capturing Script Standard Output

In a scenario where a script performs specific tasks, such as writing data to its standard output, capturing that output can be crucial for further processing. A common approach involves attempting to store the output in a variable, as illustrated in the following example:

<code class="python"># writer.py
import sys

def write():
    sys.stdout.write("foobar")</code>
Copy after login
<code class="python"># mymodule.py
from writer import write

out = write()
print(out.upper())</code>
Copy after login

However, this approach fails to capture the script's output. An alternative solution, using a StringIO object and environment setup, successfully captures the output:

<code class="python">import sys
from cStringIO import StringIO

# setup the environment
backup = sys.stdout

# ####
sys.stdout = StringIO()     # capture output
write()
out = sys.stdout.getvalue() # release output
# ####

sys.stdout.close()  # close the stream
sys.stdout = backup # restore original stdout

print(out.upper())   # post processing</code>
Copy after login

Python 3.4 Solution

For Python versions 3.4 and above, a more straightforward approach is available using the contextlib.redirect_stdout context manager:

<code class="python">from contextlib import redirect_stdout
from io import StringIO

f = StringIO()
with redirect_stdout(f):
    help(pow)
s = f.getvalue()</code>
Copy after login

The above is the detailed content of How to Capture Standard Output in Python Scripts?. For more information, please follow other related articles on the PHP Chinese website!

source:php
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template