gpt4 book ai didi

python - 如何在文件和终端之间切换 sys.stdout?

转载 作者:太空宇宙 更新时间:2023-11-04 04:50:18 26 4
gpt4 key购买 nike

我知道如果你想将标准输出重定向到一个文件,你可以简单地这样做。

sys.stdout = open(fpath, 'w')

但是如何切换回标准输出以在终端上写入?

最佳答案

您可以将其分配给变量,然后再将其返回

temp = sys.stdout 
print('console')

sys.stdout = open('output.txt', 'w')
print('file')

sys.stdout = temp
print('console')

您还可以找到如何将其与上下文管理器一起使用的示例,以便您可以使用 with 来更改它

import sys
from contextlib import contextmanager

@contextmanager
def custom_redirection(fileobj):
old = sys.stdout
sys.stdout = fileobj
try:
yield fileobj
finally:
sys.stdout = old

# ---

print('console')

with open('output.txt', 'w') as out:
with custom_redirection(out):
print('file')

print('console')

代码来自:Python 101: Redirecting stdout

目前您甚至可以在 contextlib 中找到 redirect_stdout

import sys
from contextlib import redirect_stdout

print('console')

with open('output.txt', 'w') as out:
with redirect_stdout(out):
print('file')

print('console')
<小时/>

顺便说一句:如果您想将所有文本重定向到文件,那么您可以使用系统/shell 来实现

$ python script.py > output.txt

关于python - 如何在文件和终端之间切换 sys.stdout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59255738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com