簡體   English   中英

如何打印彩色 ANSI 字符?

[英]How do I print colored ANSI characters?

我正在使用 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+----------+---------+-------+"

可以看到字符位於正確的位置並且它應該可以工作,但事實並非如此。

我想這可能與字符串開頭和結尾的引號有關,但我不確定也不知道該怎么做。

你們能幫我做對嗎?

嗯,我找到了修復它的方法。 在 API 方面,我通過執行以下操作將響應轉換為 JSON:

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

而不是我之前的return t.__str__()

之后,在 CLI 上,我執行以下操作:

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

它就像一個魅力!

謝謝大家。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM