2024-04-27 10:13:42 发布
网友
对print或stderr有什么特殊的优点或缺点吗?
print
stderr
它们只是两种不同的东西。print通常转到sys.stdout。值得知道^{}, ^{}, and ^{}之间的区别——它们都有各自的用途。
sys.stdout
特别是,stdout应该用于正常的程序输出,而stderr应该只为错误消息(异常程序执行)保留。有一些实用程序可用于分割这些流,这允许代码用户区分正常输出和错误。
stdout
注意:这里有一些微妙之处,包括流是否会流向交互设备。最令人惊讶的是,在Python 3 stderr中是行缓冲的(至少在Unix中是这样)。例如,在一个终端窗口中,以下内容在Python 2中每两秒钟打印一个数字:
for n in range(5): print >> sys.stderr, n, # final comma to squelch newline character time.sleep(2)
而在Python 3中,当循环完成时,以下内容将所有数字一起打印:
for n in range(5): print(n, file=sys.stderr, end='') # print n to sys.stderr with no newline char time.sleep(2)
print可以在任何类似文件的对象上打印,包括sys.stderr。
sys.stderr
print >> sys.stderr, 'Text'
对错误使用sys.stderr而不是sys.stdout的优点是:
这个答案是用Python 2编写的。 对于Python 3,请改用print('Text', file=sys.stderr)。
print('Text', file=sys.stderr)
它们只是两种不同的东西。}, ^{}, and ^{} 之间的区别——它们都有各自的用途。
print
通常转到sys.stdout
。值得知道^{特别是,
stdout
应该用于正常的程序输出,而stderr
应该只为错误消息(异常程序执行)保留。有一些实用程序可用于分割这些流,这允许代码用户区分正常输出和错误。注意:这里有一些微妙之处,包括流是否会流向交互设备。最令人惊讶的是,在Python 3 stderr中是行缓冲的(至少在Unix中是这样)。例如,在一个终端窗口中,以下内容在Python 2中每两秒钟打印一个数字:
而在Python 3中,当循环完成时,以下内容将所有数字一起打印:
print
可以在任何类似文件的对象上打印,包括sys.stderr
。对错误使用
sys.stderr
而不是sys.stdout
的优点是:sys.stderr
被重定向到日志文件,则在记录错误之前程序崩溃的可能性较小。这个答案是用Python 2编写的。 对于Python 3,请改用
print('Text', file=sys.stderr)
。相关问题 更多 >
编程相关推荐