zoukankan      html  css  js  c++  java
  • python 中sys.stdout.write 和 print >> sys.stdout的区别(转)

    下面应该可以解你的惑了:

    print >> sys.stdout的形式就是print的一种默认输出格式,等于print "%VALUE%"

    看下面的代码的英文注释,是print的默认帮助信息

     1 # coding=utf-8
     2 import sys, os
     3  
     4 list1Display = ['1', '2', '3']
     5 list2Display = ['abc', 'def', 'rfs']
     6 while list2Display != []:
     7     # Prints the values to a stream, or to sys.stdout by default.
     8     # Optional keyword arguments:
     9     # file: a file-like object (stream); defaults to the current sys.stdout.
    10     # sep:  string inserted between values, default a space.
    11     # end:  string appended after the last value, default a newline.
    12     # print 可以将值输出到指定的输出流(可以是文件句柄),若不指定,
    13     # 则输出到stdout(标准输出)
    14     # 一般我们使用的时候不加输出定向符“>>”到输出的file对象,本代码中对象是stdout
    15     # 下面的print在stdout对象中每次输出两个值
    16     print >> sys.stdout, list2Display.pop(), list1Display.pop()
    17 os.system( "pause" )

    上 文中只演示了python2.x中的用法,2.x中的print无法指定end符号为其他值,默认会输出一个" ",也就是用一次必定换到下一行,到了 3.x中print成为了一个真正意义上的函数,后来就可以任意指定end符号的值,你可以输出一次后末尾添加上任意你想要的值,而不是强制换行。

    1 # coding=utf-8
    2 import sys, os
    3 import time
    4 for i in range( 100 ):
    5     time.sleep( .5 )
    6     sys.stdout.write( "File transfer progress :[%3d] percent complete!
    " % i )
    7     sys.stdout.flush()

    因此在2.x中若想实现输出不换行,只能直接调用stdout对象的write方法了,下面也是一个实例,因为stdout没有end这个符号这一说,输出不会换行,因此如果你想同一样输出多次,在需要输出的字符串对象里面加上" ",就可以回到行首了。

    体会一下,将上面的" "拿掉试试看,是不是不换行而直接输出了?明白了么。很长一段时间内python都会停留在2.x的时代。

  • 相关阅读:
    HTML颜色表
    grid
    DOM和BO
    注册表
    js 正则表达式
    python学习之路(一)
    python学习之路(三)
    python学习之路(二)
    自己编写的泛型集合类(其实是照着微软的List写的)
    客户端回调服务端无刷新事件
  • 原文地址:https://www.cnblogs.com/xingmeng/p/3679884.html
Copyright © 2011-2022 走看看