首页 > 编程问答 >VS Code 未从 launch.json 中获取参数列表

VS Code 未从 launch.json 中获取参数列表

时间:2024-08-08 16:11:34浏览次数:15  
标签:python python-3.x

我有一个正在试验的基本 python 文件。我想在 vs code 中使用两个参数启动它。我已从命令窗口 (ctrl+shift+p) 打开 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",
        "type": "python",
        "request": "launch",
        "program": "${file}",
        "console": "integratedTerminal",
        "args": ["4", "2"]
    }
]
}

主程序:

import sys

def add(num1=0, num2=0):
    return int(num1) + int(num2)

def sub(num1=0, num2=0):
    return int(num1) - int(num2)

def main():
    #Assuming our inputs are valid numbers
    print ("args: ",sys.argv)
    addition = add(sys.argv[1], sys.argv[2])
    print (addition)
    subtraction = sub(sys.argv[1], sys.argv[2])
    print (subtraction)

if __name__ == '__main__':
    main()

在 VS Code 中执行时,回溯为:

>     args:  ['c:/Users/chicago/OneDrive/Documents/Code/Python/debugging/pdb 1.py']
> Traceback (most recent call last):   File
> "c:\Users\chicago\OneDrive\Documents\Code\Python\debugging\pdb
> 1.py", line 18, in <module>
>     main()   File "c:\Users\chicago\OneDrive\Documents\Code\Python\debugging\pdb
> 1.py", line 12, in main
>     addition = add(sys.argv[1], sys.argv[2]) IndexError: list index out of range

问题出在的启动配置以及如何访问参数。虽然正在 launch.json 中使用 "args" 属性正确指定参数,但当运行代码时, VS Code 调试器不会将这些参数直接传递给 sys.argv

以下是解决此问题的两种方法:

方法 1:在 launch.json 中使用 "args"

  1. 继续使用在 launch.json 中的 "args" 属性。 这会将定义的参数传递给调试器。

  2. 修改的代码以使用 sys.argv argparse 来访问参数。

  3. 使用 sys.argv

    ```python import sys

    def add(num1=0, num2=0): return int(num1) + int(num2)

    def sub(num1=0, num2=0): return int(num1) - int(num2)

    if name == ' main ': if len(sys.argv) > 2: num1 = sys.argv[1] num2 = sys.argv[2] addition = add(num1, num2) print(f"Addition: {addition}") subtraction = sub(num1, num2) print(f"Subtraction: {subtraction}") else: print("Error: Please provide two numbers as arguments.") ```

  4. 使用 argparse (推荐用于更复杂的参数处理):

    ```python import argparse

    def add(num1=0, num2=0): return int(num1) + int(num2)

    def sub(num1=0, num2=0): return int(num1) - int(num2)

    if name == ' main ': parser = argparse.ArgumentParser(description='Perform addition and subtraction.') parser.add_argument('num1', type=int, help='First number') parser.add_argument('num2', type=int, help='Second number') args = parser.parse_args()

     addition = add(args.num1, args.num2)
     print(f"Addition: {addition}")
     subtraction = sub(args.num1, args.num2)
     print(f"Subtraction: {subtraction}")
    

    ```

方法 2:使用 VS Code 的“代码运行”功能

  1. 注释掉或删除 launch.json 中的 "args" 属性。

  2. 在的 Python 代码中添加代码以手动处理参数。 可以使用 input() 函数来提示用户输入参数。

```python import sys

def add(num1=0, num2=0): return int(num1) + int(num2)

def sub(num1=0, num2=0): return int(num1) - int(num2)

if name == ' main ': # Prompt for input if no arguments are provided if len(sys.argv) < 3: num1 = input("Enter the first number: ") num2 = input("Enter the second number: ") else: num1 = sys.argv[1] num2 = sys.argv[2]

   addition = add(num1, num2)
   print(f"Addition: {addition}")
   subtraction = sub(num1, num2)
   print(f"Subtraction: {subtraction}")

```

  1. 使用 VS Code 的“代码运行”(Code Run)功能运行的代码。 可以通过右键单击代码编辑器并选择“在终端中运行 Python 文件”(Run Python File in Terminal)来执行此操作。

通过使用这些方法之一,应该能够在 VS Code 中成功使用参数运行的 Python 代码。

标签:python,python-3.x
From: 69270516

相关文章

  • Python 熊猫迭代
    代码:#Importcarsdataimportpandasaspdcars=pd.read_csv('cars.csv',index_col=0)#Adaptforloopforlab,rowincars.iterrows():print(f"{[lab]}:{row['cars_per_cap']}")输出:['US']:809['A......
  • 【第九节】python中xml解析和json编解码
    目录一、PythonXML解析1.1什么是XML1.2Python对XML的解析方法1.3SAX解析xml1.4xml.dom解析xml1.6ElementTree解析XML二、Python编解码json2.1什么是json2.2使用json库2.3使用第三方库Demjson一、PythonXML解析1.1什么是XML        XML,......
  • 从 python 设置运算符符号到方法名称的映射是什么?它们与文档不匹配
    我创建了自己的Customset类,它实现了python集合的几乎所有方法。当我使用此自定义集的实例时,许多集合运算符都会失败。它们会失败,并显示类似以下内容的内容:TypeError:unsupportedoperandtype(s)for-:'Customset'andCustomset'orTypeError:'<='......
  • 21.python函数(return)
    return一、return语句1、return是指定一个返回值2、在python中创建一个函数,可以用return语句指定返回的的值,这个返回值可以是任意的类型3、return语句在同一个函数中可以出现多次,但是只有有一个得到执行,就会直接结束函数的执行。return后面的语句不执行了4、return的格式re......
  • 【Python代码】如何根据出生日期计算出年龄?
    哈喽,大家好,木易巷来啦!假设我们有一个包含出生日期的Excel文件,需要计算每个人的年龄,你会怎么做呢?具体情况如下图:今天木易巷分享通过Python及其强大的pandas库,来实现从Excel文件中读取日期数据,计算年龄,并将结果存储回Excel文件中的过程。话不多说,开干!▍1、环境准备在开......
  • python 无法解密重音字符(如 è),我该怎么办?
    我正在解决这个ctf,您必须使用PyCryptodome模块通过DES加密消息。消息是“Launghezzadiquestafrasenonèdivisibileper8”(意大利语)。我无法将此消息转换为字节,因为重音字符不包含在utf-8中(我认为这就是解释)。有人可以帮我加密消息吗?fromCrypto.Util.Paddingimp......
  • Python笔记
    Python1变量1、什么是变量变量是关联一个对象的标识符变量可以绑定一个对象,并可以通过变量名使用这个对象2、变量的命名方法:以字母或下划线开头,后面跟字母、下划线或者数字3、python中的关键字不能用作变量名4、变量无类型,对象有类型5、在交互模式下查看当前作用域内的......
  • 如何在python中使用jdbc jar文件连接informix数据库
    有什么想法如何使用jdbcjar文件连接到informix数据库吗?在python我尝试了jaydebeapi,当我执行时:conn=jaydebeapi.connect('com.informix.jdbc.IfxDriver',myurl,['user','pass'],jdbc_driver_path)...然后从表中选择数据的其余代码当我执行myscript.py它只......
  • Python爬虫实战:实时微信推送奥运奖牌榜信息
    最近奥运会正在巴黎如火如荼地进行。为了能第一时间获得我国运动健儿的获奖情况,我给大家分享一个python爬虫项目——实时微信推送奥运奖牌榜信息。爬虫每隔5分钟抓取一次奥林匹克官网奖牌榜数据,对比上次抓取的数据,如果奖牌数量或者排名有变化,就将新的获奖信息推送到......
  • 基于Python实现可视化分析中国500强排行榜数据的设计与实现
    基于Python实现可视化分析中国500强排行榜数据的设计与实现“DesignandImplementationofVisualAnalysisforChina’sTop500CompaniesRankingDatausingPython”完整下载链接:基于Python实现可视化分析中国500强排行榜数据的设计与实现文章目录基于Python......