Python 3中print和click.echo的区别是什么?

19

我正在使用 click 模块创建 Unix 终端的 CLI 应用程序。因此,我看到两种可以显示数据的方式:print(data)click.echo(data)

它们之间有什么区别,我应该使用哪个?


2
http://click.pocoo.org/5/quickstart/#echoing - chepner
1
它包含更多选项 - Willem Van Onsem
1个回答

22
请在使用库之前至少阅读快速入门指南。答案在快速入门指南的第三部分中。 如果您使用click,则优选 click.echo(),因为:

Click试图以相同的方式支持Python 2和Python 3,并在环境配置错误时具有很强的健壮性。即使一切都完全崩溃,Click也至少要基本可用。

这意味着echo()函数会在终端配置错误时应用一些纠错,而不是死亡并出现UnicodeError。

另外,从Click 2.0开始,echo函数还具有良好的ANSI颜色支持。如果输出流是文件并且支持colorama,则它将自动剥离ANSI代码,在Windows上也支持ANSI颜色。有关详细信息,请参见ANSI颜色。

如果您不需要此功能,则还可以使用print()结构/函数。


1
我发现click.echo的源代码非常清晰。
  1. 它使用了来自click._compat的util函数,这些函数类似于six,以确保库在python2和3都获得支持。
  2. 无论消息是bytes还是字符串,它都可以工作。
  3. 支持颜色样式。 这是源代码:code
- DboyLiao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接