Chris Headleand
Chris Headleand

Reputation: 6193

command line arguments not being recognised

Im trying to send some command line arguments to a program I've written. I adapted some code I found in a tutorial. However, only the last of the arguments I am sending seam to be getting through. For example, if I type the following in:

python test.py -m A

Nothing happens, however, if I type in:

python test.py -s A

the final argument in the list it seams to work... (code attached below)

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:])

Upvotes: 0

Views: 89

Answers (1)

Hamatti
Hamatti

Reputation: 1220

In your code you have

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

which should be

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

Since you had that right on all the other places, I guess this was just forgotten there.

Upvotes: 3

Related Questions