命令行参数无法识别

时间:2014-04-10 23:59:06

标签: python command-line

我试图将一些命令行参数发送给我写过的程序。我修改了一些我在教程中找到的代码。但是,只有我发送缝隙的最后一个参数才能通过。例如,如果我输入以下内容:

python test.py -m A

但是,如果我输入:

,则没有任何反应
python test.py -s A

它接缝的列表中的最后一个参数...(下面附带的代码)

import sys, getopt

def main(argv):
    mina = ""
    capsize= ""
    matchcharge= ""
    steps= ""

try:
    opts, args = getopt.getopt(argv,"m:cs:mc:s:",["min=","capsize=","matchcharge=","steps="])
except getopt.GetoptError:
    print("argument not recognised")
    sys.exit(2)
for opt, arg in opts:
    if opt == ("-m", "--min"):
        mina = arg
        print("1")
    elif opt in ("-cs", "--capsize"):
        capsize = arg
        print("2")
    elif opt in ("-mc", "--matchcharge"):
        matchcharge = arg
        print("3")
    elif opt in ("-s", "--steps"):
        steps = arg
        print("4")

print("mina " + str(min))
print("capsize" + str(capsize))
print("matchcharge" + str(matchcharge))
print("steps " + str(steps))


if __name__ == "__main__":
   main(sys.argv[1:])

1 个答案:

答案 0 :(得分:3)

在您的代码中

if opt == ("-m", "--min"):

应该是

if opt in ("-m", "--min"):

由于你在其他所有地方都有这种权利,我想这只是在那里被遗忘了。