Python。如何将文本作为超链接打印到控制台?

Python. How to print text to console as hyperlink?

我正在开发控制台应用程序。我的应用程序使用 urwid 库。在某些情况下,我需要在 table 列中将非常长的超链接显示为短文本。我想在单击列中的文本时在浏览器中打开链接。

那么,我的问题是:

是否可以将文本作为超链接打印到控制台?

能否提供一个小示例,说明如何使用 python 将文本打印为超链接?

不,某些控制台确实可以识别 url 并将它们转换为可点击的超链接。您所能做的就是通过在您的 url.

中放置一个 http:// 来使控制台应用程序易于识别

另见 How does bash recognize a link?

是的,使用一些工具,例如 gNewt 或 Curses,您可以创建一个按钮并 'on click' 执行一个操作(例如打开浏览器到给定的 url)。

gNewt : http://gnewt.sourceforge.net/

n诅咒:https://docs.python.org/3.7/library/curses.html

否则,终端应用程序将管理您提供的文本,如果它不实现 uri 的识别,您的程序将无法按您的意愿运行。

有点晚了,但现在完全有办法做到这一点,没有诅咒或任何东西,只是纯文本和终端模拟器的协作。

def link(uri, label=None):
    if label is None: 
        label = uri
    parameters = ''

    # OSC 8 ; params ; URI ST <name> OSC 8 ;; ST 
    escape_mask = '3]8;{};{}3\{}3]8;;3\'

    return escape_mask.format(parameters, uri, label)

使用 link('https://example.com/') 调用该函数以获得简单、可点击的 link,或使用 link('https://example.com/', 'example') 获得自定义标签。

请注意,link在您的终端中带有淡淡的下划线,并非所有终端都支持该功能。