首页 > 编程语言 > 详细

Python一个print问题的研究

时间:2015-12-24 00:14:50      阅读:990      评论:0      收藏:0      [点我收藏+]

The hard way习题10有一个打印正在处理的例子
while True:
    for i int ["/","-","\\","|"]:
        print "%s\r" % i,
效果是在同一个地方打印不停旋转的斜杠:
技术分享
其中:
1、逗号(,)是在用逗号隔开的两个字符串之间打印空格
print "abcd",
print "efg",
print "h","i"
技术分享
2、加号(+)是连接两个字符串,中间无间隔
print "abcd"+"efg"
技术分享
3、\r是指在该处移动光标到本行首
print "abcd\re"
打印完abdc后,移到行首,再打印e
技术分享
习题10为了防止效果变化过快,故用time.sleep(1)做延时,在windows下是正常的
import time
while True:
    for i in ["/","-","\\","|"]:
        print "%s\r" % i,
        time.sleep(0.2)
但在非Win系统下比如linux、mac就什么也打印不出来。
这是因为linux的print在遇到换行符之前会把要打印的字符串缓存起来,遇到换行符才打印
所以在死循环中一直没有换行符,就什么也不打印
解决办法:通过flush强制刷新缓冲区,或者在python命令行后面加-u
方法1:
import sys,time
while True:
    for i in ["/","-","\\","|"]:
        print "%s\r" % i,
        sys.stdout.flush()
        time.sleep(0.2)
方法2:
不加flush,通过python -u来执行 

Python一个print问题的研究

原文:http://www.cnblogs.com/zhengyue/p/5071583.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!