重定向 sys.stdin 和 sys.stdout [duplicate]

Redirect sys.stdin and sys.stdout [duplicate]

提问人:kotori 提问时间:10/15/2023 最后编辑:John Kugelmankotori 更新时间:10/15/2023 访问量:34

问:

我正在尝试重定向 stdin 和 stdout。我第一次尝试了以下代码:

from sys import stdin, stdout

stdin = open('in.txt','r')
stdout = open('out.txt','w')

for line in stdin:
    print(line)

它读取 ,但 print 仍写入终端。in.txt

第二个版本将输出写入:out.txt

import sys

sys.stdin = open('in.txt','r')
sys.stdout = open('out.txt','w')

for line in sys.stdin:
    print(line)

那么这两个程序有什么区别呢?为什么第一个不起作用?

最后,我尝试了这个版本,它也有效:

from sys import stdin, stdout

stdin = open('in.txt', 'r')
stdout = open('out.txt', 'w')

for line in stdin:
    print(line, file=stdout)
python stdout stdin

评论

0赞 John Kugelman 10/15/2023
相关新闻: 将 stdout 重定向到 Python 中的文件?
1赞 Charles Duffy 10/15/2023
“有什么区别?”——一个人创建一个新的本地到你的当前模块变量,覆盖你用 创建的内容,而不改变另一个模块;另一个伸入模块并更改其内容。“显式比隐式更好”,引用 Python 的禅宗;如果要覆盖另一个模块的内容,则需要显式执行此操作。importsys

答: 暂无答案