这是我的代码:
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
我希望width和height变量分别设置为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。为什么我会收到此错误,如何解决?感谢。
答案 0 :(得分:2)
使用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'
答案 1 :(得分:0)
修正:
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])