Statt direkt Argumente auf Variablen über sys.arg
zuweisen, warum Sie nicht versuchen, mit die getopt
oder argparse
Module? Es ist viel einfacher und flexibler, dies zu tun. Hier ist ein Beispiel unter Verwendung von argparse
(aus der Dokumentation von Python 2.7):
import argparse
parser = argparse.ArgumentParser(description='Sum or find the max of some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='just an integer')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum command line arguments [default action is to find the maximum]')
args = parser.parse_args() # Simple enough, right?
print args.accumulate(args.integers)
die Sie verwenden können (nennen wir es args.py):
# ./args.py 1 2 3 4
4
# ./args.py 1 2 3 4 --sum
10
ich sogar die Reihenfolge der Integer-Argumente geändert und die --sum
und es schien nicht viel ausmacht!
Alternativ mit getopt
:
import getopt, sys
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], "hm:v", ["help", "message="])
except getopt.GetoptError, err:
print str(err) # will print an error about option not recognized..
# maybe you should print something informative about correct usage here.
sys.exit(1)
# Default option values
message = None
verbose = False
# Process cmd line options
for o, a in opts:
if o == "-v":
verbose = True
elif o in ("-h", "--help"):
usage()
sys.exit(2)
elif o in ("-m", "--message"):
message = a
else:
assert False, "unhandled option!"
'''
Do whatever you wish..
'''
if __name__ == "__main__":
main()
Was ist die Frage? Zeigen Sie uns etwas Code oder etwas, damit wir Ihnen den Fehler zeigen können. –
Werfen Sie einen Blick auf: http://docs.python.org/dev/library/argparse.html –