2014-05-20 21 views
6

Ho il seguente codice:pitone argparse: arg senza bandiera

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

C'è un modo di non utilizzare il flag -revs quando utilizzarlo, in questo modo:

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

risposta

10

Sì.

si dispone di più soluzioni:

  • Come accennato mrav, è possibile utilizzare l'argomento di sistema (sys.argv [0 ...])
  • Oppure utilizzare argparse. Dal documentation (che è compatibile python3), si può fare in questo modo:

    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) 
    

E si può vedere il risultato:

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