2014-05-20 12 views
6

Mam następujący kod:pyton argparse: arg bez flagi

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

Czy istnieje sposób, aby nie użyć flagi -revs kiedy go używać, podobnie jak to:

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

Odpowiedz

10

Tak.

mieć wiele rozwiązań:

  • Jak wspomniano Mrav, można użyć argumentu systemowego (sys.argv [0 ...])
  • lub użyj argparse. Z documentation (który jest zgodny python3), można to zrobić w ten sposób:

    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) 
    

I można zobaczyć wynik:

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