繁体   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