我有一个正在试验的基本 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"
-
继续使用在
launch.json
中的"args"
属性。 这会将定义的参数传递给调试器。 -
修改的代码以使用
sys.argv
或argparse
来访问参数。 -
使用
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.") ```
-
使用
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 的“代码运行”功能
-
注释掉或删除
launch.json
中的"args"
属性。 -
在的 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}")
```
- 使用 VS Code 的“代码运行”(Code Run)功能运行的代码。 可以通过右键单击代码编辑器并选择“在终端中运行 Python 文件”(Run Python File in Terminal)来执行此操作。
通过使用这些方法之一,应该能够在 VS Code 中成功使用参数运行的 Python 代码。
标签:python,python-3.x From: 69270516