Visual Studio代码:使用参数运行python文件

Thy*_*st' 8 python debugging visual-studio-code

有什么简单的方法可以在带有参数的VS Code中运行python文件吗?

我知道我可以launch.json使用args关键字在文件中添加自定义配置。但是,launch.json仅仅因为我想使用不同的参数,每次修改都是很烦人的。

Jer*_*son 31

Visual Studio Code 仅支持一个launch.json文件。但是,它支持两种或多种配置,它们出现在左侧菜单/窗格的下拉列表中(而不是“无配置”)。

在此处输入图片说明

在 DEBUG 窗格中,单击上面红色圈出的Config按钮或单击蓝色链接“create launch.json file”

单击它,它会创建一个带有调试配置的launch.json文件。编辑此文件并以这种密钥对格式添加参数,并为不同的参数添加多个参数,包括变量替换

{
    // 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": [
        {
            "name": "Python: Current File with my args",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "args": [
                "--username", "Jeremy",
                "--account", "Stackoverflow"
            ],
            "console": "integratedTerminal"
        },
        {
            "name": "Python: Current File with UserName arg",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "args": ["${env:USERNAME}"],
            "console": "integratedTerminal"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

在 Python 脚本中放置一个断点,例如在下面的第一行def main(...),然后按F5或单击Run Menu > Start Debugging

  • 这是一个有用的答案,但问题是关于*运行*,而不是*调试*。是否可以使用参数运行脚本,而不会因调试器而导致延迟? (8认同)
  • 我可以以某种方式使用启动配置进行正常运行,而不是进行调试吗?或者我如何在不调试的情况下传递参数? (3认同)

Jot*_*taf 6

一种解决方法是让您的脚本要求命令行参数(在内部 Visual Studio Code 控制台中)。

依靠readline可以使这更有用,它允许您执行诸如按向上箭头键循环浏览以前的命令(命令历史记录)等操作。一个例子:

import argparse, readline

def main():
  # Ask for additional command line arguments if needed (for VSCode)
  parser = argparse.ArgumentParser()
  parser.add_argument('--interactive', action='store_true', default=False)
  (args, rest) = parser.parse_known_args()
  if args.interactive:
    try: readline.read_history_file()
    except: pass
    rest += input("Arguments: ").split(" ")  # Get input args
    try: readline.write_history_file()
    except: pass

  # Your other script arguments go here
  parser.add_argument("-output-dir", default="/out")
  # ...
  args = parser.parse_args(rest)

  print(args)

if __name__ == "__main__":
  main()
Run Code Online (Sandbox Code Playgroud)

然后只需将 Visual Studio Code 设置为始终传入--interactive参数,即使您设置断点,您的脚本也将始终要求提供参数(带有历史记录!)。


Kes*_*ran 5

您可以添加自定义任务来执行此操作。这涉及tasks.json. 您可以为您的项目(项目文件夹)添加一个默认的tasks.json文件。按着这些次序。键盘按Ctrl+ Shift+ B。会提示如下弹窗

在此处输入图片说明

单击Configure Build Task如果已经在以下位置编辑器中创建了自定义 tasks.json文件.vscode/tasks.json将打开它。如果没有,它会下拉现有任务运行器的建议。

我们的目的是为我们的项目创建一个自定义的tasks.json文件,因此要创建一个,我们需要从下拉列表中选择其他选项。检查下面的屏幕截图。

在此处输入图片说明

一旦你选择了Others选项,你会看到一个默认的tasks.json文件将从项目的根目录创建到 location .vscode/tasks.json。下面是一个tasks.json的例子。

在此处输入图片说明

现在编辑tasks.json文件以支持 Python。

  1. 将 Command 属性从 更改"echo""Python"
  2. 保持 showOutput 为 "Always"
  3. 将 args(参数)从更改["Hello World"]["${file}"](文件名)
  4. 删除最后一个属性 problemMatcher
  5. 保持 isShellCommand 和 version 属性不变
  6. 保存所做的更改

您现在可以打开 .py 文件并使用快捷方式Ctrl+ Shift+很好地运行它B

  • 例如,我想从命令面板启动调试器,使用类似`debug arg1 arg2` 的东西,它会像`python app.py arg1 arg2` 一样启动我的脚本。 (5认同)

Ehs*_*adi 5

如果您的项目中没有\xe2\x80\x99t文件,您可以按Ctrl+ Shift+创建一个新文件B创建一个新文件。然后选择向您显示的第一个选项,然后将其全部替换为以下内容:

\n
{\n    // See https://go.microsoft.com/fwlink/?LinkId=733558\n    // for the documentation about the tasks.json format\n    "version": "2.0.0",\n    "tasks": [\n        {\n            "label": "Run Python with argument",\n            "type": "shell",\n            "command": "python PROGRAM_NAME.py ARG1 ARG2 ...",\n            "group": {\n                "kind": "build",\n                "isDefault": true\n            }\n        }\n    ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n

否则将上述配置添加到现有的tasks.json中文件中。

\n

将上述配置中的 PROGRAM_NAME 替换为您的程序名称,ARG1 ARG2 ... 表示您的具体参数。

\n

毕竟,您可以使用Ctrl+ Shift+执行您创建的任务B执行创建的任务,并选择新的“使用参数运行 Python”任务。

\n