[파이썬] `sys.__stdout__`: 원본 표준 출력 스트림

In Python, the sys module provides access to some variables used or maintained by the interpreter and to functions that interact with the interpreter. One of the important variables in the sys module is sys.__stdout__, which represents the original standard output stream.

Standard output is the default location where the output of a program is displayed. It refers to the screen or console where the program is being run. The sys.__stdout__ variable holds a reference to this original standard output stream.

Importance of sys.__stdout__

Sometimes, you may need to redirect the standard output stream to a different destination. By default, Python prints the output of a program to the console. However, in some cases, you might want to capture or redirect this output into a file or another stream.

To achieve this, you can temporarily redirect the standard output stream using the sys.stdout attribute. However, if you want to access the original standard output stream, you can use sys.__stdout__.

Example

Let’s see an example to understand how sys.__stdout__ works:

import sys

# Store the reference to the original standard output stream
original_stdout = sys.__stdout__

# Redirect the standard output stream to a file
sys.stdout = open("output.txt", "w")

# Print some content
print("Hello, World!")

# Restore the original standard output stream
sys.stdout = original_stdout

# Print some content again
print("Output redirected to 'output.txt'")

In the above example, we first store a reference to the original standard output stream in the variable original_stdout. Then, we redirect the standard output to a file named “output.txt”. We print some content, which will be written to the file instead of being displayed on the console.

Finally, we restore the original standard output stream by assigning sys.__stdout__ back to sys.stdout. This ensures that future print statements will return to printing on the console.

Conclusion

The sys.__stdout__ variable provides a way to access and restore the original standard output stream in Python. It is useful when you need to temporarily redirect the output stream and then revert it back to its original state.

By understanding and utilizing sys.__stdout__, you can have more control over where the output of your Python programs is directed.