在Microsoft Visual Studio中运行带参数的Python脚本

17 投票
5 回答
39675 浏览
提问于 2025-04-18 16:22

我刚开始学习Python,并且在使用微软的Visual Studio。

我需要运行这个代码(但它提示我需要多个值):

from sys import argv

script, first, second, third = argv

print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third

我明白我需要输入这个(比如说)才能运行代码:

python ex13.py first 2nd 3rd

但是我应该在哪里写这个呢?

在Visual Studio里只有一个“开始”按钮可以用来运行脚本。

5 个回答

0

这是关于Visual Studio 2022的内容。

在解决方案资源管理器中,右键点击你的Python文件,然后选择“添加调试配置”(如果有的话,也可以选择“打开调试和启动设置”)。

解决方案资源管理器截图

现在,在打开的json配置文件中,把你的参数添加到合适的键下。

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "python",
      "interpreter": "(default)",
      "interpreterArguments": "",
      "scriptArguments": "myArgument1 myArgument2",
      "env": {},
      "nativeDebug": false,
      "webBrowserUrl": "",
      "project": "setup.py",
      "projectTarget": "",
      "name": "setup.py"
    }
  ]
}

简单粗暴的解决方案

在脚本的最顶部添加以下内容(如果你有from __future__ import,就放在它们下面)。

import sys
sys.argv.extend(["myArgument1", "myArgument2"])
1

在Visual Studio里,你可以打开一个终端(查看 -> 终端)。从那里你可以快速运行程序并传入参数。

python <your_script.py> <args>
9

你可以通过以下步骤输入你的命令行选项

  1. 解决方案资源管理器中,右键点击你的项目,然后选择属性

  2. 点击调试标签

  3. 脚本参数中,输入你的命令行选项

在这里输入图片描述

现在,当你运行这个项目时,它会使用你输入的命令行选项来运行。

举个例子,我的代码中有:

opts, args = getopt.getopt(argv,"p:n:",["points=","startNumber="])

在脚本参数中,我输入了 -p 100, -n 1

我使用的是Visual Studio 2017。

16

你可以使用Visual Studio的Python工具插件来设置Python解释器。首先创建一个新的Python项目,然后进入项目属性中的调试选项,输入你的参数。这里不需要输入python或者你的脚本名称,只需要输入参数即可。在常规设置中指定你的脚本文件作为启动文件。点击开始调试,就可以用你指定的参数运行你的脚本了。

6

我写了一个例子。在循环中,你可以对每个参数进行测试,看看它们是否正确。你可以把这些参数放在你项目的属性对话框里。在调试的时候,比如说,脚本参数可以是“-i aplha.txt”。

import sys
import getopt

def main(argv):
    try:
        opts, args = getopt.getopt(argv,"hi:",["ifile="])
    except getopt.GetoptError:
      print 'test.py -i <inputfile>'
      sys.exit(2)
    for opt, arg in opts:
        if opt in ("-i", "--ifile"):
            inputfile = arg
    print 'Input file is "', inputfile

if __name__ == "__main__":
   main(sys.argv[1:])

撰写回答