freopen()的Python版本

2024-04-28 00:00:57 发布

您现在位置:Python中文网/ 问答频道 /正文

< Python中有什么可以复制C或C++中FrutOnEd()的功能吗?准确地说,我想复制以下功能:

freopen("input.txt","r",stdin);

以及

^{pr2}$

然后使用相同的(标准)函数进行控制台I/O和文件I/O。有什么想法吗?在


Tags: 文件函数功能txtinput标准stdinpr2
3条回答

如果您在*nix平台上工作,您可以编写自己的freopen。在

def freopen(f,option,stream):
    import os
    oldf = open(f,option)
    oldfd = oldf.fileno()
    newfd = stream.fileno()
    os.close(newfd)
    os.dup2(oldfd, newfd)

import sys
freopen("hello","w",sys.stdout)

print "world"

sys.stdout只是file对象,因此,您可以将其重新打开到另一个目的地

out = sys.stdout
sys.stdout = open('output.txt', 'w')
// do some work
sys.stdout = out

out仅用于在工作后将sys.stdout目的地恢复为默认值(正如Martijn Pieters所建议的那样,您可以使用sys.__stdout__来恢复它,或者根本不恢复,如果您不需要的话)。在

试试这个:

import sys
sys.stdin = open('input.txt', 'r') 
sys.stdout = open('output.txt', 'w')

文本文件是不言而喻的。 现在您可以在Sublime文本或任何其他文本编辑器上运行此代码。在

相关问题 更多 >