簡體   English   中英

"輸出和調試控制台中的 Visual Studio 代碼\\n"

[英]Visual Studio Code \n in Output & Debug Console

我正在使用 Visual Studio Code 在 Windows 10 機器上使用 Python 3.9.7 創建 AWS Lambda SAM 應用程序。 我在 Visual Studio Code 中使用 AWS Toolkit 和 Python 擴展。

在運行/調試 Lambda SAM 應用程序時,Visual Studio 代碼輸出窗口和調試控制台都將錯誤消息和堆棧跟蹤顯示為帶有 \\n 字符的未格式化字典,而不是在輸出中添加實際的新行。 典型的錯誤/堆棧跟蹤非常不可讀,如下所示,但根據窗口寬度自動換行:

{"errorMessage": "\"['Date'] not in index\"", "errorType": "KeyError", "requestId": "b77183d6-140c-418f-a94d-3f3e2a091b91", "stackTrace": ["  File \"/var/task/app.py\", line 44, in lambda_handler\n    modelreturn, modeltopN = neuralnet.np_neuralnet_trainfirereturn ( df, payload )\n", "  File \"/var/task/neuralnet.py\", line 175, in np_neuralnet_trainfirereturn\n    np_dfdateindexes, np_dates = dates.np_getdates(df[[datecolumnname, \"Ticker\"]].sort_values(by=[datecolumnname, \"Ticker\"]).reset_index(drop=True))\n", "  File \"/var/task/pandas/core/frame.py\", line 3464, in __getitem__\n    indexer = self.loc._get_listlike_indexer(key, axis=1)[1]\n", "  File \"/var/task/pandas/core/indexing.py\", line 1314, in _get_listlike_indexer\n    self._validate_read_indexer(keyarr, indexer, axis)\n", "  File \"/var/task/pandas/core/indexing.py\", line 1377, in _validate_read_indexer\n    raise KeyError(f\"{not_found} not in index\")\n"]}

我嘗試在 Visual Studio Code 的右下角切換 CRLF 和 LF 無濟於事。

我能找到的最接近的相關問題是https://github.com/microsoft/vscode/issues/73845 ,它似乎得出的結論是“VS Code 前端不應轉義換行符。由調試擴展決定如何應該顯示數據,調試擴展可以決定是否應該轉義換行符。"

所以聽起來 \\n 的處理應該由 AWS SAM 擴展或 Python 擴展來完成? 但是,我找不到任何設置來控制輸出或調試控制台窗口中的 \\n 行為。 我什至不確定是否需要在 VSCode、AWS Toolkit 或 Python 擴展中解決這個問題?

如何獲得 Visual Studio Code、AWS SAM 擴展或 Python 擴展,通過用換行符替換 \\n 字符,使錯誤消息和堆棧跟蹤更具可讀性和可用性,因此輸出窗口和/或調試控制台窗口看起來更像下列的? 是否有一些我缺少的設置或其他一些會格式化輸出的擴展?

{"errorMessage": "\"['Date'] not in index\"", "errorType": "KeyError", "requestId": "b77183d6-140c-418f-a94d-3f3e2a091b91", "stackTrace": ["  File \"/var/task/app.py\", line 44, in lambda_handler
modelreturn, modeltopN = net.np_net_return ( df, payload )
  File \"/var/task/net.py\", line 175, in np_net_return
    np_dfdateindexes, np_dates = dates.np_getdates(df[[datecolumnname, \"Ticker\"]].sort_values(by=[datecolumnname, \"Ticker\"]).reset_index(drop=True))
  File \"/var/task/pandas/core/frame.py\", line 3464, in __getitem__
    indexer = self.loc._get_listlike_indexer(key, axis=1)[1]
  File \"/var/task/pandas/core/indexing.py\", line 1314, in _get_listlike_indexer
    self._validate_read_indexer(keyarr, indexer, axis)
  File \"/var/task/pandas/core/indexing.py\", line 1377, in _validate_read_indexer
    raise KeyError(f\"{not_found} not in index\")\n"]}

一種選擇是使用 perl 用真正的換行符替換\\n<\/code>字符:

這就是你調用本地 lambda 的方式:

以下是一些其他格式選項:鏈接<\/a>

暫無
暫無

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

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