sys.stdout.write与sys.sterr.write(一)

目标:

  1.使用sys.stdout.write输入0-9数字

  2.使用sys.stderr.write输出0-9数字

  3.使用两种方式输出0-9,显示0变化到9的过程

 

1.使用sys.stdout.write和sys.stderr.write打印

[root@localhost python]# cat 1.py
#
!/usr/bin/env python import sys sys.stdout.write("stdout1") sys.stderr.write("stderr1") sys.stdout.write("stdout2") sys.stderr.write("stderr2") [root@localhost python]# python 1.py stderr1stderr2stdout1stdout2[root@localhost python]#
提示:使用sys.stdout.write方式输出,顺序发生变化,输出2个stderr,再输出2个stdout,这是因为sys.stdout.write输出的方式有缓存,而sys.stderr.write输出的方式无缓存。
sys.stdout.write去掉缓存的方法:
  1.添加换行符
  2.执行脚本时添加 -u 选项
  3.调用sys.stdout.flush
①添加换行符'\n' [root@localhost python]
# cat 1.py #!/usr/bin/env python import sys sys.stdout.write("stdout1\n") sys.stderr.write("stderr1\n") sys.stdout.write("stdout2\n") sys.stderr.write("stderr2\n") [root@localhost python]# python 1.py stdout1 stderr1 stdout2 stderr2
②执行脚本加 -u 选项
[root@localhost python]# cat 1.py
#!/usr/bin/env python import sys sys.stdout.write("stdout1") sys.stderr.write("stderr1") sys.stdout.write("stdout2") sys.stderr.write("stderr2") [root@localhost python]# python 1.py stdout1stderr1stdout2stderr2[root@localhost python]#

③调用sys.stdout.flush
[root@localhost python]# cat 1.py
#!/usr/bin/env python import sys sys.stdout.write("stdout1")
sys.stdout.flush() sys.stderr.write("stderr1") sys.stdout.write("stdout2")
sys.stdout.flush() sys.stderr.write("stderr2") [root@localhost python]# python 1.py stdout1stderr1stdout2stderr2[root@localhost python]#

 

2.使用sys.stdout.write和sys.stderr.write输出0-9的变化过程

代码如下:

[root@localhost python]# cat std_write.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys,time

for i in xrange(10):
    sys.stdout.write('%s\r' % i)
    sys.stdout.flush()
    time.sleep(0.2)
#打印换行
print

for i in xrange(10):
    sys.stderr.write('%s\r' % i)
    time.sleep(0.2)
print

3.运行代码,测试效果,会看到0一直变化到9,最后显示9结束。

[root@localhost python]# python std_write.py
9
9

 

posted @ 2017-01-03 18:18  xkops  阅读(2756)  评论(0编辑  收藏  举报