如何打印彩色 ANSI 字符?
How do I print colored ANSI characters?
我正在使用 Flask 和 flask_restful 开发一个 API 和一个匹配的 CLI,用于我正在处理的项目,现在我遇到了一些我无法摆脱的事情。在 API 方面,当我在某个端点上收到请求时,我使用 PrettyTable 库在终端上构建彩色 table。我正在构建 table 如下:
t = PrettyTable([ Color.CGREEN2 + 'Username' + Color.CEND,
Color.CGREEN2 + 'Dataset' + Color.CEND,
Color.CGREEN2 + 'Files' + Color.CEND])
for ds in db.getAllDatasets( username ):
t.add_row( [username, ds.dataset, len(ds.files)] )
return t.__str__()
我已经尝试 return t 对象,但它不是 JSON 可序列化的。通过调用 __str__ 方法,我能够 return 成功,但无法在我的终端上正确打印输出。我为此使用的代码是:
try:
r = requests.post(url='http://my-server:my-port/my-endpoint', data=data)
print (str(r.text))
except requests.exceptions.ConnectionError:
MSG_ERROR (self, "Failed to connect to LPS Cluster.")
我得到的输出是:
"+----------+---------+-------+\n| \u001b[92mUsername\u001b[0m | \u001b[92mDataset\u001b[0m | \u001b[92mFiles\u001b[0m |\n+----------+---------+-------+\n+----------+---------+-------+"
可能会看到字符在正确的位置并且它应该起作用,但它没有。
我想这可能与字符串开头和结尾的引号有关,但我不确定也不知道该怎么办。
你们能帮我弄好吗?
好吧,我找到了修复它的方法。在 API 方面,我通过执行以下操作将响应变成 JSON:
return jsonify(
error_code=HTTPStatus.OK,
message=t.get_string()
)
而不是我之前的return t.__str__()
。
之后,在 CLI 上,我执行:
print (r.json()['message'])
它就像一个魅力!
谢谢大家
我正在使用 Flask 和 flask_restful 开发一个 API 和一个匹配的 CLI,用于我正在处理的项目,现在我遇到了一些我无法摆脱的事情。在 API 方面,当我在某个端点上收到请求时,我使用 PrettyTable 库在终端上构建彩色 table。我正在构建 table 如下:
t = PrettyTable([ Color.CGREEN2 + 'Username' + Color.CEND,
Color.CGREEN2 + 'Dataset' + Color.CEND,
Color.CGREEN2 + 'Files' + Color.CEND])
for ds in db.getAllDatasets( username ):
t.add_row( [username, ds.dataset, len(ds.files)] )
return t.__str__()
我已经尝试 return t 对象,但它不是 JSON 可序列化的。通过调用 __str__ 方法,我能够 return 成功,但无法在我的终端上正确打印输出。我为此使用的代码是:
try:
r = requests.post(url='http://my-server:my-port/my-endpoint', data=data)
print (str(r.text))
except requests.exceptions.ConnectionError:
MSG_ERROR (self, "Failed to connect to LPS Cluster.")
我得到的输出是:
"+----------+---------+-------+\n| \u001b[92mUsername\u001b[0m | \u001b[92mDataset\u001b[0m | \u001b[92mFiles\u001b[0m |\n+----------+---------+-------+\n+----------+---------+-------+"
可能会看到字符在正确的位置并且它应该起作用,但它没有。
我想这可能与字符串开头和结尾的引号有关,但我不确定也不知道该怎么办。
你们能帮我弄好吗?
好吧,我找到了修复它的方法。在 API 方面,我通过执行以下操作将响应变成 JSON:
return jsonify(
error_code=HTTPStatus.OK,
message=t.get_string()
)
而不是我之前的return t.__str__()
。
之后,在 CLI 上,我执行:
print (r.json()['message'])
它就像一个魅力!
谢谢大家