免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6562 | 回复: 7

使用sys.stdout指向打开文件以后,怎样恢复 [复制链接]

论坛徽章:
0
发表于 2005-08-16 13:18 |显示全部楼层
我是学习python的新手,在学习的时候遇到这个问题:
import sys
sys.stdout=open('E:\\output.txt','w')
后所有的输出都输出到文件中去,我想恢复输出到终端显示器上应该怎样做?
谢谢诸位:)

论坛徽章:
0
发表于 2005-08-16 15:09 |显示全部楼层

使用sys.stdout指向打开文件以后,怎样恢复

sys中有__stdout__,它就是原始的stdout的值,把它赋给stdout即可。

论坛徽章:
0
发表于 2005-08-17 09:29 |显示全部楼层

使用sys.stdout指向打开文件以后,怎样恢复

怎么还是不成呢?我在python23下,sys.__stdout__的输出结果是<open file '<stdout>;', mode 'w' at 0x009CE060>;,当我按照您的用法再输入sys.stdout=sys.__stdout__以后,输出结果确实不往文件中输入了,但是也不输出在屏幕中,不知道输出到哪里去了;(

论坛徽章:
0
发表于 2005-08-17 09:52 |显示全部楼层

使用sys.stdout指向打开文件以后,怎样恢复

我试了没有问题呀,代码如下:

import sys
old_stdout = sys.stdout
sys.stdout = file("a.txt", 'w')
for i in range(10):
    print >;>;sys.stdout, i
   
sys.stdout = sys.__stdout__
for i in range(10):
    print >;>;sys.stdout, i

论坛徽章:
0
发表于 2005-08-17 10:49 |显示全部楼层

使用sys.stdout指向打开文件以后,怎样恢复

为什么?limodou,我按照你的代码在我的机器上敲了几遍,输入至文件还是没有问题,但是sys.stdout = sys.__stdout__ 之后我还是没有在显示器上看到预想到的0-9的输出,不知道输出到什么地方去了,这是怎么回事啊,我的python是2.3版本的,winxpsp2,运行其他python程序从来都没有出过问题啊?能不能帮我分析一下,谢谢了

论坛徽章:
0
发表于 2005-08-17 11:02 |显示全部楼层

使用sys.stdout指向打开文件以后,怎样恢复

不知你是如何运行的。我是在命令行下运行的。

论坛徽章:
0
发表于 2005-08-17 12:25 |显示全部楼层

使用sys.stdout指向打开文件以后,怎样恢复

贴出你运行的系统环境,python的版本,以及详细的出错信息等。

论坛徽章:
0
发表于 2005-08-18 09:31 |显示全部楼层

使用sys.stdout指向打开文件以后,怎样恢复

我在命令行下又试了一遍,这次可以了。
出问题的时候是在python shell(IDLE)下运行的,这两种环境下到底有什么区别,在IDLE下为什么就不可以呢?
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP