使用自定义类捕获 Python 控制台输出 - Capturing Console Output in Python Using Custom Class

在python中,当执行一段代码时,如果想要获取这段代码输出到控制台的信息的话,可以使用重定向stdout的方法。

In Python, if you want to capture the information output to the console when executing a piece of code, you can use the method of redirecting stdout.


首先,建立一个类,里面有两个函数,write和flush

First, establish a class with two functions, write and flush.

```python
class StdoutRedirect:
    def __init__(self):
        self.content = ''

    def write(self, text):
        self.content += text

    def flush(self):
        self.content = ''

```

实例化这个类,并且重定向sys.stdout

Instantiate this class and redirect sys.stdout to it.

```python
my_stdout = StdoutRedirect()
sys.stdout = my_stdout
```

之后的任何输出都会进入my_stdout的content里。

Any subsequent output will go into the content of my_stdout.


在所需重定向输出的代码结束后,只需将sys.stdout重定向回默认的输出流即可。

At the end of the code where you need to redirect the output, you just need to redirect sys.stdout back to the default output stream.

```python
sys.stdout = sys.__stdout__
```

完整代码如下

The complete code is as follows:

```python
import sys


class StdoutRedirect:
    def __init__(self):
        self.content = ''

    def write(self, text):
        self.content += text

    def flush(self):
        self.content = ''


my_stdout = StdoutRedirect()
sys.stdout = my_stdout

print(114514)

sys.stdout = sys.__stdout__
result = my_stdout.content
my_stdout.flush()

print("result: " + result)
```

热门博文 - Popular posts