2011-01-09 12 views
3

wenn ich Argumente akzeptieren, wie ich überprüfen, ob zwei zur gleichen Zeit zeigen, ohne eine Verbindung bedingtenPython - sys.argv und Flagge Identifizierung

dh

#!/usr/bin/python 
import random, string 
import mymodule 
import sys 

z = ' '.join(sys.argv[2:]) 
q = ''.join(sys.argv[3:]) 
a = ''.join(sys.argv[2:]) 
s = ' '.join(sys.argv[1:]) 
flags = sys.argv[1:5] 

commands = [["-r", "reverse string passed next with no quotes needed."], ["-j", "joins arguments passed into string. no quotes needed."], ["--palindrome", "tests whether arguments passed are palindrome or not. collective."],["--rand","passes random string of 10 digits/letters"]] 

try: 
    if "-r" in flags: 
     if "-j" in flags: 
      print mymodule.reverse(q) 
     if not "-j" in flags: 
      print mymodule.reverse(z) 

    if "-j" in flags: 
     if not "-r" in flags: 
      print a 

    if "--palindrome" in flags: mymodule.ispalindrome(z) 

    if (not "-r" or not "-j" or not "--palindrome") in flags: mymodule.say(s) 

    if "--rand" in flags: print(''.join([random.choice(string.ascii_letters+"123456789") for f in range(10)])) 

    if not sys.argv[1]: print mymodule.no_arg_error 

    if "--help" in flags: print commands 

except: print mymodule.no_arg_error 

mit ich will nur in der Lage sein, sagen

wenn „-r“ und „j“ in den Flaggen in keiner bestimmten Reihenfolge: Verwendung würde argparse für th tun, was

Antwort

0

Auch getopt sehen. Es hat eine etwas engere Syntax und ein vollständiges Beispiel in der Dokumentation.

+0

Was meinst du mit knappen Syntax? – tekknolagi

+0

Mit optparse, Sie in der Regel 'add_option()' für jede Option. Mit getopt schreibst du einfach etwas wie 'options, fnames = getopt (" abf: ")' und das handhabt '-a',' -b' und '-f filename'. – 9000

+0

das klingt großartig – tekknolagi

4

ich empfehle ist (oder optparse, wenn Sie auf Python 2.6.x oder älter sind).

Ohne Modul würden Sie dies tun:

if "-r" in flags and "-j" in flags: 
    do whatever 

Aber ich schlage vor, Sie in der Dokumentation zu argparse lesen und lernen, wie es zu benutzen. Du wirst glücklich sein, dass du es getan hast.

+0

Wie funktioniert das opt-Parsing? – tekknolagi

+0

ich bin nicht mit OptParse vertraut und das ist ein Grund. – tekknolagi

5

So etwas wie

import optparse 

p = optparse.OptionParser() 
p.add_option('--foo', '-f', default="yadda") 
p.add_option('--bar', '-b') 
options, arguments = p.parse_args() 

# if options.foo and options.bar ... 
+0

macht Sinn .... – tekknolagi

+0

Was macht "default"? nur neugierig, wie ich das – tekknolagi

+0

neu in Python integrieren würde, nicht Programmierung – tekknolagi

Verwandte Themen