Getopt 不阅读所有选项
Getopt not reading all options
这是我第一次在 python 中使用 Getopt,我遇到了一个问题:
opts, args = getopt.getopt(sys.argv[1:], "hrs", ["help","random","somethingelse"])
for o, a in opts:
if o in "-h" or "--help":
help()
elif o in "-r" or "--random":
random()
elif o in "-s" or "--somethingelse":
somethingelse()
如果我输入:python test.py -r 或 python test.py -s。它仍然会转到帮助函数,而不是转到 random() 或 somethingelse() 函数。
您需要将可能的选项放入列表或元组中:
opts, args = getopt.getopt(sys.argv[1:], "hrs", ["help","random","somethingelse"])
for o, a in opts:
if o in ["-h", "--help"]:
help()
elif o in ["-r", "--random"]:
random()
elif o in ["-s", "--somethingelse"]:
somethingelse()
你目前的方式,你的第一个条件 if o in "-h" or "--help":
完全有效 Python,但它永远是 True
,因为你实际测试的是 "truthiness" 分别为 o in "-h"
和 "--help"
。这始终是 True
,因为即使 o in "-h"
是 False
,"--help"
也始终是 True
,因为它是一个非空字符串。
另一方面,如果您测试 if o in ["-h", "--help"]:
,这将检查 o
是否是列表 ["-h", "--help"]
中的一项,并且只会 return True
如果是的话。
这是我第一次在 python 中使用 Getopt,我遇到了一个问题:
opts, args = getopt.getopt(sys.argv[1:], "hrs", ["help","random","somethingelse"])
for o, a in opts:
if o in "-h" or "--help":
help()
elif o in "-r" or "--random":
random()
elif o in "-s" or "--somethingelse":
somethingelse()
如果我输入:python test.py -r 或 python test.py -s。它仍然会转到帮助函数,而不是转到 random() 或 somethingelse() 函数。
您需要将可能的选项放入列表或元组中:
opts, args = getopt.getopt(sys.argv[1:], "hrs", ["help","random","somethingelse"])
for o, a in opts:
if o in ["-h", "--help"]:
help()
elif o in ["-r", "--random"]:
random()
elif o in ["-s", "--somethingelse"]:
somethingelse()
你目前的方式,你的第一个条件 if o in "-h" or "--help":
完全有效 Python,但它永远是 True
,因为你实际测试的是 "truthiness" 分别为 o in "-h"
和 "--help"
。这始终是 True
,因为即使 o in "-h"
是 False
,"--help"
也始终是 True
,因为它是一个非空字符串。
另一方面,如果您测试 if o in ["-h", "--help"]:
,这将检查 o
是否是列表 ["-h", "--help"]
中的一项,并且只会 return True
如果是的话。