首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >freopen()的Python版本

freopen()的Python版本
EN

Stack Overflow用户
提问于 2013-05-16 16:12:08
回答 5查看 4.5K关注 0票数 12

python中有没有什么东西可以复制C或C++中freopen()的功能呢?准确地说,我想复制以下功能:

代码语言:javascript
复制
freopen("input.txt","r",stdin);

代码语言:javascript
复制
freopen("output.txt","w",stdout);

然后对文件I/O的控制台I/O使用相同的(标准)函数。

EN

回答 5

Stack Overflow用户

发布于 2013-05-16 16:16:44

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

代码语言:javascript
复制
out = sys.stdout
sys.stdout = open('output.txt', 'w')
// do some work
sys.stdout = out

out仅用于在下班后将sys.stdout目标恢复为默认状态(正如Martijn建议的那样-您可以使用sys.__stdout__恢复它,或者根本不恢复,如果您不需要它的话)。

票数 11
EN

Stack Overflow用户

发布于 2018-01-20 21:58:59

试试这个:

代码语言:javascript
复制
import sys
sys.stdin = open('input.txt', 'r') 
sys.stdout = open('output.txt', 'w')

文本文件是自解释的。您现在可以在Sublime Text或任何其他文本编辑器上运行此代码。

票数 7
EN

Stack Overflow用户

发布于 2013-05-16 16:26:47

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

代码语言:javascript
复制
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"
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16582194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档