首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python - TypeError:列表索引必须是整数或切片,而不是字符串

python - TypeError:列表索引必须是整数或切片,而不是字符串
EN

Stack Overflow用户
提问于 2018-06-14 01:46:59
回答 2查看 608关注 0票数 -1

下面是我的代码:

代码语言:javascript
复制
for i in range(len(sys.argv)):
    if sys.argv[i] == "--width":
        if math.isnan(sys.argv[i+1]):
            print("Width specified ({0}) is not a valid integer!".format(sys.argv[i+1]))
            sys.exit()
    else:
        width = int(sys.argv[i+1])

以下是我的输入:

代码语言:javascript
复制
python3 main.py --width 1280 --height 720

我希望宽度和高度变量分别设置为1280和720。

相反,我得到的是:

代码语言:javascript
复制
Traceback (most recent call last):
  File "main.py", line 8, in <module>
    if sys.argv[i] == "--width":
TypeError: list indices must be integers or slices, not str

我对命令行Python有一定的经验,但这是我第一次创建PyQt应用程序,尤其是使用sys.argv。为什么会出现此错误,以及如何修复它?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-06-14 01:57:25

使用argparse模块,而不是使用自己的命令行参数处理器。

代码语言:javascript
复制
import argparse

p = argparse.ArgumentParser()
p.add_argument("--width", type=int, default=0)
args = p.parse_args()

print("You chose {}".format(args.width))

在行动中:

代码语言:javascript
复制
% python tmp.py
You chose 0
% python tmp.py --width 3
You chose 3
% python tmp.py --width foo
usage: tmp.py [-h] [--width WIDTH]
tmp.py: error: argument --width: invalid int value: 'foo'
票数 2
EN

Stack Overflow用户

发布于 2018-06-14 01:55:25

修复:

代码语言:javascript
复制
for i in range(len(sys.argv)):
    if sys.argv[i] == "--width":
        if math.isnan(sys.argv[i+1]):
            print("Width specified ({0}) is not a valid integer!".format(sys.argv[i+1]))
            sys.exit()
    else:
        width = int(sys.argv[i+1])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50843303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档