【问题标题】:Python, argument parameter error with sys modulePython,sys模块的参数参数错误
【发布时间】:2022-01-11 18:27:13
【问题描述】:

我正在尝试使用 sys 模块在 python 中获取参数。 这是我的代码:

import sys
import os
path = sys.argv[0]
argument = sys.argv[1]
print("Hello, Temal Script installed.")
if argument == "-h":
    os.system("cls")
    print("Available comamnds:\n-h = help\n-i = information\n-v = version")
if argument == "-i":
    os.system("cls")
    print("This is a script written by Temal")
if argument == "-v":
    os.system("cls")
    print("Version: 1.0")

如果我在 cmd "main.py -h" 中输入,效果很好。但如果我只输入“main.py”,它会打印出一个错误:

Traceback (most recent call last):
  File "C:\Windows\cmd.py", line 5, in <module>
    argument = sys.argv[1]
IndexError: list index out of range

我知道为什么会出现此错误,因为列表中只有一项(路径),因为我没有输入第二个参数。但是,如果没有设置第二个参数,我该怎么做才能让脚本忽略此错误?如果有人在没有参数的情况下输入 main.py,我只想打印出以下文本:Hello, Temal Script installed. 或者也许在PHP“isset”中有类似的东西? 我也是这个话题的新手,所以请回答简单而不复杂。 谢谢!

【问题讨论】:

  • 列表索引超出范围意味着提到的索引值尚未声明..它不在您声明的数组中!
  • 是的,如果没有声明,我该如何忽略这个错误?
  • 添加一个检查..来检查数组的长度

标签: python cmd parameters arguments system


【解决方案1】:

需要检查sys.argv变量的长度。

import sys
import os

path = sys.argv[0]
if len(sys.argv) > 1:
    argument = sys.argv[1]
    print("Hello, Temal Script installed.")
    if argument == "-h":
        os.system("cls")
        print("Available comamnds:\n-h = help\n-i = information\n-v = version")
    elif argument == "-i":
       os.system("cls")
       print("This is a script written by Temal")
    elif argument == "-v":
        os.system("cls")
        print("Version: 1.0")

另外,查看argparse 模块。

import argparse
import os

parser = argparse.ArgumentParser(description="My App")
parser.add_argument('-i', '--info', action='store_true',
    help="show information")
parser.add_argument('-v', '--version', action='store_true',
    help="show version")
args = parser.parse_args()

if args.info:
    os.system("cls")
    print("This is a script written by Temal")
elif args.version:
    os.system("cls")
    print("Version: 1.0")

运行main.py -h 输出:

usage: help.py [-h] [-i] [-v]

My App

optional arguments:
  -h, --help     show this help message and exit
  -i, --info     show information
  -v, --version  show version

【讨论】:

  • 非常感谢,成功了!
猜你喜欢
  • 2017-03-14
  • 2023-03-04
  • 2019-03-16
  • 2021-01-30
  • 2021-02-14
  • 1970-01-01
  • 2023-04-03
  • 2011-07-13
  • 2015-08-07
相关资源
最近更新 更多