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