Для расширения Python и для конфигурации console
вместо "integratedTerminal"
можно использовать "internalConsole"
.
{
"name": "run-py-with-special-chars-internalconsole",
"type": "python",
"request": "launch",
"cwd": "${workspaceFolder}/Q",
"program": "${workspaceFolder}/Q/test.py",
"args": [
"-u",
"camera@iot-project.com",
"-p",
"Y^bKKiUPu!fM6!dBsvnALmuXbP6fqT$d"
],
"console": "internalConsole" // <--------------------
}
Вот урезанный версия вашего кода и вывод print
на вкладку Консоль отладки :
, где сохраняется пароль, аналогично запуску сценария вручную:
$ python test.py -u 'camera@iot-project.com' -p 'Y^bKKiUPu!fM6!dBsvnALmuXbP6fqT$d'
Опция internalConsole
использует консоль отладчика VS Code. Я пытался найти хорошую ссылку на него во время написания этого ответа, но все, что я нашел, это: Консоль отладки , которая говорит, что " Выражения могут быть оценены в Консоли отладки REPL".
Похоже, это означает, что специальные символы не оцениваются как специальные команды по сравнению с integratedTerminal
, который в основном использует базовую оболочку вашей ОС. На Linux и Ma c это может означать bash
, а !
означает другое на терминале .
Вы можете увидеть проблему с опцией integratedTerminal
, когда посмотрите на вывод терминала
bash-3.2$ env DEBUGPY_LAUNCHER_PORT=56036 /path/to/bin/python
/path/to/.vscode/extensions/ms-python.python-2020.3.69010/pythonFiles/lib/python/debugpy/no_wheels/debugpy/launcher
/path/to/test.py -u camera@iot-project.com -p Y^bKKiUPu!fM6!dBsvnALmuXbP6fqT$d
bash: !fM6!dBsvnALmuXbP6fqT$d: event not found
, и он передает пароль со специальными символами без кавычек.