sys.stdout.write与sys.sterr.write

Posted 韩德田Tivens

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sys.stdout.write与sys.sterr.write相关的知识,希望对你有一定的参考价值。

目标:

  1.使用sys.stdout.write模拟火车道轨迹变化过程

  2.使用sys.stderr.write模拟火车道轨迹变化过程

 

1.sys.stdout.write模拟火车道轨迹变化

代码如下:

[root@localhost python]# vim railway.py

[root@localhost python]# cat railway.py
#!/usr/bin/env python
#coding:utf8

import sys,time

width = 20
i = 0
while True:
    sys.stdout.write(\'%s%s%s\\r\' %(\'#\' * i, \'a\', \'#\' * (width - i)))
    i +=1
    sys.stdout.flush()
    time.sleep(0.2)
    if i > width:
        i = 0
    #打印出每行的过程,注释print会出现a字符从首字符跑到末尾,然后继续重复上面的工作,及模拟火车道的轨迹。
    print

•运行代码,测试效果

[root@localhost python]# python railway.py

a####################
#a###################
##a##################
###a#################
####a################
#####a###############
######a##############
#######a#############
########a############
#########a###########
##########a##########
###########a#########
############a########
#############a#######
##############a######
###############a#####
################a####
#################a###
##################a##
###################a#
####################a
a####################
#a###################
##a##################

*提示:代码中的print是为了打印上面每一步的变化过程,将print注释重新运行,就会看到a从头到尾不断变化(在一行之中),实现模拟火车道轨迹变化的过程。

 

2.sys.stderr.write模拟火车道轨迹变化(该代码注释了print)

代码如下:

[root@localhost python]# cat railway.py

#!/usr/bin/env python
#coding:utf8

import sys,time

width = 20
i = 0
while True:
    sys.stderr.write(\'%s%s%s\\r\' %(\'#\' * i, \'a\', \'#\' * (width - i)))
    i +=1
    time.sleep(0.2)
    if i > width:
        i = 0

•运行代码,测试效果

 

以上是关于sys.stdout.write与sys.sterr.write的主要内容,如果未能解决你的问题,请参考以下文章

[Python]sys.stdin.readline(), sys.stdout.write(), sys.stdin.write()

Python 标准输出 sys.stdout 重定向

为啥 sys.stdout.write 被调用两次?

sys.stdout.write 和 print 的区别?

python unicode处理print和sys.stdout.write之间的差异

sys.stdout.write() 在 MRJOB 映射器中去哪里?