目标:
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)
3.运行代码,测试效果,会看到0一直变化到9,最后显示9结束。
[root@localhost python]# python std_write.py
9
9