是否存在sys.stdout.write()比print更可取的情况?
(例子:更好的性能;更有意义的代码)
是否存在sys.stdout.write()比print更可取的情况?
(例子:更好的性能;更有意义的代码)
当前回答
Print只是一个精简的包装器,它格式化输入(可修改,但默认在args和换行符之间有空格),并调用给定对象的write函数。缺省情况下,该节点为sys。Stdout,但您可以使用“雪佛龙”形式传递文件。例如:
print >> open('file.txt', 'w'), 'Hello', 'World', 2+3
见:https://docs.python.org/2/reference/simple_stmts.html?highlight=print print语句
在Python 3中。X, print变成了一个函数,但是仍然可以传递除了sys。Stdout感谢文件文档。
print('Hello', 'World', 2+3, file=open('file.txt', 'w'))
看到https://docs.python.org/3/library/functions.html打印
在Python 2.6+中,print仍然是一个语句,但它可以用作with的函数
from __future__ import print_function
更新:Bakuriu评论指出,print函数和print语句之间(更一般地说,是函数和语句之间)有一个很小的区别。
如果计算参数时出现错误:
print "something", 1/0, "other" #prints only something because 1/0 raise an Exception
print("something", 1/0, "other") #doesn't print anything. The function is not called
其他回答
在某些情况下是否更适合使用sys.stdout.write() 打印吗?
例如,我正在处理一个小函数,它在传递数字作为参数时以金字塔格式打印星星,尽管您可以使用end=""在单独的行中打印来完成这一点,但我使用sys.stdout.write与print配合使用来完成此工作。详细说明此标准输出。在同一行中写入打印,而as print总是在单独一行中打印其内容。
import sys
def printstars(count):
if count >= 1:
i = 1
while (i <= count):
x=0
while(x<i):
sys.stdout.write('*')
x = x+1
print('')
i=i+1
printstars(5)
我的问题是是否有 在这些情况下 Sys.stdout.write()更可取 打印
有一天,在完成一个脚本的开发后,我把它上传到unix服务器上。我的所有调试消息都使用打印语句,这些语句不会出现在服务器日志中。
在这种情况下,您可能需要sys.stdout.write来代替。
当动态打印有用时,例如,在一个较长的过程中提供信息:
import time, sys
Iterations = 555
for k in range(Iterations+1):
# Some code to execute here ...
percentage = k / Iterations
time_msg = "\rRunning Progress at {0:.2%} ".format(percentage)
sys.stdout.write(time_msg)
sys.stdout.flush()
time.sleep(0.01)
Print只是一个精简的包装器,它格式化输入(可修改,但默认在args和换行符之间有空格),并调用给定对象的write函数。缺省情况下,该节点为sys。Stdout,但您可以使用“雪佛龙”形式传递文件。例如:
print >> open('file.txt', 'w'), 'Hello', 'World', 2+3
见:https://docs.python.org/2/reference/simple_stmts.html?highlight=print print语句
在Python 3中。X, print变成了一个函数,但是仍然可以传递除了sys。Stdout感谢文件文档。
print('Hello', 'World', 2+3, file=open('file.txt', 'w'))
看到https://docs.python.org/3/library/functions.html打印
在Python 2.6+中,print仍然是一个语句,但它可以用作with的函数
from __future__ import print_function
更新:Bakuriu评论指出,print函数和print语句之间(更一般地说,是函数和语句之间)有一个很小的区别。
如果计算参数时出现错误:
print "something", 1/0, "other" #prints only something because 1/0 raise an Exception
print("something", 1/0, "other") #doesn't print anything. The function is not called
其中一个区别如下,当试图将一个字节打印为其十六进制外观时。例如,我们知道十进制值255是十六进制的0xFF:
val = '{:02x}'.format(255)
sys.stdout.write(val) # Prints ff2
print(val) # Prints ff