下面是我的代码:
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])
以下是我的输入:
python3 main.py --width 1280 --height 720
我希望宽度和高度变量分别设置为1280和720。
相反,我得到的是:
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。为什么会出现此错误,以及如何修复它?谢谢。
发布于 2018-06-14 01:57:25
使用argparse
模块,而不是使用自己的命令行参数处理器。
import argparse
p = argparse.ArgumentParser()
p.add_argument("--width", type=int, default=0)
args = p.parse_args()
print("You chose {}".format(args.width))
在行动中:
% 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'
发布于 2018-06-14 01:55:25
修复:
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])
https://stackoverflow.com/questions/50843303
复制相似问题