在 VSCODE 中调试 Python 脚本,同时使用 argparse 从终端调用它

Debug a Python script in VSCODE while calling it from terminal with argparse

假设我有以下脚本:

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-t','--text',
                help="Input a text")
args = parser.parse_args()

def test_function(x):
    y = x
    print(y)

if __name__ == '__main__':
    test_function(args.text)

我用

从控制台调用
python newtest.py -t hello

问题:在 Visual Code 中,有没有一种方法可以让我从命令行执行代码(如上所示),但同时也可以在例如在 test_function 中的 y=x 行,以便我可以调试从命令行调用的脚本?

现在只是执行,断点被忽略,基本上不会停在这里:

不完全是您问题的答案,但我的网络搜索在我找到我想要的东西之前将我带到了这里,即使用参数调用脚本并使用 vscode 调试器。这不会调试您在终端中调用的内容,而是设置您 运行 调试时调用的内容。如果您的文件夹中有很多不同的东西,尝试维护它们或类似的东西可能会很麻烦,但是...

如果您转到 .vscode 目录中的 launch.json 文件,您将获得调试配置。您可以在其中为 args 添加一个列表项。所以,我的看起来像这样,然后调用我正在调试的任何 python 文件加上 -r asdf

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "args": [
                "-r asdf"
            ],
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": true
        }
    ]
}

如果你有多个参数,你不能把它们放在同一个字符串中,它们应该是单独的、分开的元素。起初没有意识到这一点,但它毕竟是一个列表。所以有多个会是这样的:

...
    "args": [
        "-r asdf",
        "-m fdsa"
    ]
...