2014-05-20 10 views
6

Ich habe den folgenden Code:Python argparse: arg ohne Flagge

parser.add_argument('file', help='file to test') 
parser.add_argument('-revs', help='range of versions', nargs='+', default=False) 

Gibt es eine Möglichkeit die Fahne nicht verwenden -revs wenn es verwenden, wie folgt aus:

./somescript.py settings.json 1 2 3 4 

Antwort

10

Ja.

Sie haben mehrere Lösungen:

  • Wie mrav erwähnt, können Sie das System Argument verwenden (sys.argv [0 ...])
  • Oder argparse verwenden. Vom documentation (die python3 kompatibel ist), können Sie auf diese Weise tun:

    if __name__ == '__main__': 
        parser = ArgumentParser() 
        parser.add_argument('file') 
        parser.add_argument('revs', metavar='N', type=int, nargs='+', help='revisions') 
        res = parser.parse_args() 
        pprint(res) 
    

Und Sie sehen das Ergebnis kann:

$ ./test.py settings.json 1 2 3 
Namespace(file='settings.json', revs=[1, 2, 3])