我如何打印彩色ANSI字符?

问题描述 投票:2回答:1

我正在使用Flask和flask_restful开发一个API,并为我正在研究的项目开发一个匹配的CLI,现在遇到了一些我无法摆脱的事情。在API方面,当我在某个端点上收到请求时,我使用PrettyTable库在终端上构建彩色表。我正在如下构建表格:

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__()

我试图返回t对象,但是它不是JSON可序列化的。通过调用__ str __方法,我能够成功返回它,但是无法在终端上正确打印输出。我正在使用的代码是:

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+----------+---------+-------+"

可能会看到字符在正确的位置,应该可以,但不能。

我想它可能与字符串的开头和结尾处的引号有关,但我不确定,也不知道该怎么办。

你们能帮我弄对吗?

python python-3.x string colors flask-restful
1个回答
0
投票

嗯,我找到了一种修复它的方法。在API方面,我通过执行以下操作将响应转换为JSON:

return jsonify(
    error_code=HTTPStatus.OK,
    message=t.get_string()
)

而不是我以前的return t.__str__()。>>

之后,在CLI上,我进行了:

print (r.json()['message'])

并且它就像一个魅力!

谢谢大家。

© www.soinside.com 2019 - 2024. All rights reserved.