Python使用sys模块获取命令行参数无参数时触发IndexError如何解决
解决方法
你要的类似PHP isset 的判断逻辑可以通过判断sys.argv的列表长度实现,直接修改代码如下即可:
import sys import os path = sys.argv[0] print("Hello, Temal Script installed.") # 存在传入参数时才执行后续逻辑 if len(sys.argv) >= 2: argument = sys.argv[1] if argument == "-h": os.system("cls") print("Available commands:\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")
逻辑说明
sys.argv是存储命令行参数的列表,长度至少为1(第一个元素永远是脚本本身路径),当有额外参数传入时长度会增加len(sys.argv) >=2的判断等价于判断是否存在第二个命令行参数,完全可以替代PHP里isset(sys.argv[1])的效果- 不带参数运行时不会进入if分支,仅打印指定提示,不会抛出越界错误
可选实现:异常捕获
你也可以用Python的异常捕获机制处理该场景,代码如下:
import sys import os path = sys.argv[0] print("Hello, Temal Script installed.") try: argument = sys.argv[1] except IndexError: # 未传入参数直接结束运行 exit() if argument == "-h": os.system("cls") print("Available commands:\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")
内容的提问来源于stack exchange,提问作者Temal
相关产品推荐
相关产品推荐

