gpt4 book ai didi

python - 为什么我不能使用 "from sys import stdout"重定向 STDOUT?

转载 作者:行者123 更新时间:2023-11-28 20:59:20 24 4
gpt4 key购买 nike

我正在尝试将 python 脚本的 STDOUT 重定向到一个文件。

如果 STDOUT 是 sys 导入的,脚本的输出不会被重定向到一个文件:

from sys import stdout
stdout = open("text", "w")
print("Hello")

但是,如果我 导入 sys 并使用 sys.stdout,则脚本的输出会成功重定向:

import sys
sys.stdout = open("text", "w")
print("Hello")

这是为什么?根据this answer “导入 X”和“从 X 导入 Y”之间的唯一区别是绑定(bind)的名称。这如何影响标准输出?

最佳答案

是的,唯一的区别是名称 Y 绑定(bind)到 X.Y

无论哪种方式,将 Y 绑定(bind)到其他内容都不会影响 X 中的任何内容。


如果它更容易,请考虑以下平行:

>>> y = 2
>>> x = y
>>> x = 3

您希望这会将 y 更改为 3 吗?当然不是。但这与您正在做的完全一样。


如果还是不清楚,让我们分解一下那些 import 的实际作用。

当您导入 sys 时,它等同于:

sys.modules['sys'] = __import__('sys')
sys = sys.modules['sys']
sys.stdout = open(text, "w")

但是使用 from sys import stdout:

sys.modules['sys'] = __import__('sys')
stdout = sys.modules['sys'].stdout
stdout = open(text, "w")

关于python - 为什么我不能使用 "from sys import stdout"重定向 STDOUT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49786743/

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