python 中sys.stdout.write 和 print >> sys.stdout的区别

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

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# coding=utf-8

import sys, os

list1Display = [‘1‘‘2‘‘3‘]

list2Display = [‘abc‘‘def‘‘rfs‘]

while list2Display != []:

    # Prints the values to a stream, or to sys.stdout by default.

    # Optional keyword arguments:

    # file: a file-like object (stream); defaults to the current sys.stdout.

    # sep:  string inserted between values, default a space.

    # end:  string appended after the last value, default a newline.

    # print 可以将值输出到指定的输出流(可以是文件句柄),若不指定,

    # 则输出到stdout(标准输出)

    # 一般我们使用的时候不加输出定向符“>>”到输出的file对象,本代码中对象是stdout

    # 下面的print在stdout对象中每次输出两个值

    print >> sys.stdout, list2Display.pop(), list1Display.pop()

os.system( "pause" )

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

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


1

2

3

4

5

6

7

# coding=utf-8

import sys, os

import time

for in range(5):

    time.sleep( .5 )

    sys.stdout.write( "File transfer progress :[%3d] percent complete!\r" % i )

    sys.stdout.flush()

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

运行结果的区别如下:

-----------------------------------------------------------------

网络摘抄笔记,若涉及版本,请联系本博主删除。

时间: 2024-08-27 04:04:45

python 中sys.stdout.write 和 print >> sys.stdout的区别的相关文章

Python中内置数据类型list,tuple,dict,set的区别和用法

Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set.这里对他们进行一个简明的总结. (原链接:http://www.jb51.net/article/76339.htm) List 字面意思就是一个集合,在Python中List中的元素用中括号[]来表示,可以这样定义一个List: ? 1 L = [12, 'China', 19.998] 可以看到并不要求元素的类型都是一样的.当然也可以定

在Python中,val、exec和 compile 有什么区别?

基本上 eval 上用来评估一个动态生成的 Python 表达式:exec 额外的用于执行动态生成的 python 代码. eval 和 exec 有以下两个差异 eval 只接受一个表达式,exec 可以接受一个包含了 python 语句的代码块: loops, try: except:, class 以及定义的函数和方法 Python 中的表达式是任何可以作为变量赋值中的值的表达式: a_variable = (任何你可以放在这个括号内的都是一个表达式) evale 返回表达式的值,而 ex

Python中的re.search和re.findall之间的区别

参考博客:http://www.crifan.com/python_re_search_vs_re_findall/ 在这里,我想说一下我目前遇到的问题 这是一个本地的文件 text.txt <html> <head> <title>极客学院爬虫测试</title> </head> <body> <div class="topic"><a href="http://jikexueyuan

python中items()和iteritems()的区别

items()函数,将一个字典以dict_items的形式返回,因为字典是无序的,所以返回的列表也是无序的: 1 a ={'a':1,'b':2,'c':3,'d':4} 2 print(a.items()) 3 >dict_items([('a', 1), ('b', 2), ('c', 3), ('d', 4)]) 4 a.items() 5 >Out[13]: dict_items([('a', 1), ('b', 2), ('c', 3), ('d', 4) iteritems()函数

python中str()和repr()的区别

1 >>> s = 'Hello, world.' 2 >>> str(s) 3 'Hello, world.' 4 >>> repr(s) 5 "'Hello, world.'" 6 >>> str(1.0/7.0) 7 '0.142857142857' 8 >>> repr(1.0/7.0) 9 '0.14285714285714285' 10 >>> x = 10 * 3.

python中静态方法(@staticmethod)和类方法(@classmethod)的区别

一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁. 既然@staticmethod和@classmethod都可以直接类名.方法名()来调用,那他们有什么区别呢 从它们的使用上来看, @staticmethod不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样. @cla

Python中的列表、元祖、字典的区别

定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner','list'],7-9j] 1.list(str):将str转换成list类型,str可以使字符串也可以是元组类型 2.aList.append('test'):追加元素到列表中去 3.del aList[1]:删除列表中下标为1的元素 del aList:删除整个列表 4.cmp(list1,list2):比较两个列

Python中read()、readline()和readlines()三者间的区别和用法

----------------------------------------------------------------------------------------------------- read() read(size)方法从文件当前位置起(那么在编写程序中注意光标的位置!)读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象 readline() 从字面意思可以看出,该方法每次读出一行内容,所以,读取时占用内存小,比较适合大文件,该方法返回一个字

python中str函数isdigit、isdecimal、isnumeric的区别

num = "1" #unicodenum.isdigit() # Truenum.isdecimal() # Truenum.isnumeric() # True num = "1" # 全角num.isdigit() # Truenum.isdecimal() # Truenum.isnumeric() # True num = b"1" # bytenum.isdigit() # Truenum.isdecimal() # Attribut