博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 2.x 中print >> sys.out ,print 与sys.out.write()的关系
阅读量:5063 次
发布时间:2019-06-12

本文共 1328 字,大约阅读时间需要 4 分钟。

print 会调用 sys.stdout 的 write 方法

以下两行在事实上等价:

sys.stdout.write('hello,python'+'\n')print 'hello,python'

print >> sys.stdout 相当于把输出重定向到sys.stdout对象( 一般我们使用的时候不加输出定向符“>>”到输出的file对象),默认的sys.stdout对象是控制台,也可以进行改变让它重定向到文件,如:sys.out = open('f.txt','w')

原始的 sys.stdout 指向控制台,如果把文件的对象的引用赋给 sys.stdout,那么 print 调用的就是文件对象的 write 方法

f_handler=open('out.log', 'w')sys.stdout=f_handlerprint 'hello' # this hello can't be viewed on concole# this hello is in file out.log

如果你还想在控制台打印一些东西的话,最好先将原始的控制台对象引用保存下来,向文件中打印之后再恢复 sys.stdout

import sys temp = sys.stdout sys.stdout = open('file.txt','w') print 'hello world' sys.stdout = temp #恢复默认映射关系 print 'nice'
由于在python2中输出默认换行,因此在2.x中若想实现输出不换行,只能直接调用stdout对象的write方法,因为stdout没有end这个符号这一说,输出不会换行,因此如果你想同一样输出多次,在需要输出的字符串对象里面加上"\r",就可以回到行首了。 sys.stdout.write( "File transfer progress :[%3d] percent complete!\r" % i )
1 # coding=utf-82 import sys, os3 import time4 for i in range( 100 ):5     time.sleep( .5 )6     sys.stdout.write( "File transfer progress :[%3d] percent complete!\r" % i )7     sys.stdout.flush()
此外sys.stdin 与 raw_input

当我们用 raw_input('Input promption: ') 时,事实上是先把提示信息输出,然后捕获输入

以下两组在事实上等价:

hi=raw_input('hello:')print 'hello:', #comma to stay in the same linehi=sys.stdin.readline()[:-1] # -1 to discard the '\n' in input stream

转载于:https://www.cnblogs.com/SteveWesley/p/9995160.html

你可能感兴趣的文章
JAR打包和运行
查看>>
session如何保存在专门的StateServer服务器中
查看>>
react展示数据
查看>>
测试计划
查看>>
idea设置自定义图片
查看>>
[高级]Android多线程任务优化1:探讨AsyncTask的缺陷
查看>>
选择器
查看>>
rownum 的使用
查看>>
Mysql与Oracle 的对比
查看>>
MVC系列博客之排球计分(三)模型类的实现
查看>>
npm安装
查看>>
阅读笔记02
查看>>
2019年春季学期第二周作业
查看>>
2014北邮计算机考研复试上机题解(上午+下午)
查看>>
mySQL 教程 第7章 存储过程和函数
查看>>
OGG同步Oracle到Kafka(Kafka Connect Handler)
查看>>
算法笔记_056:蓝桥杯练习 未名湖边的烦恼(Java)
查看>>
idea的maven项目无法引入junit
查看>>
jquery实现限制textarea输入字数
查看>>
thinkphp5 csv格式导入导出(多数据处理)
查看>>