Jak dodać opcjonalną flagę do moich argumentów wiersza poleceń?
na przykład. więc mogę pisać
python myprog.py
lub
python myprog.py -w
próbowałem
parser.add_argument('-w')
Ale po prostu pojawia się komunikat o błędzie
Usage [-w W]
error: argument -w: expected one argument
co, jak rozumiem, oznacza, że chce wartości argumentu dla opcji -w. Jak można zaakceptować flagę?
Znajduję http://docs.python.org/library/argparse.html raczej nieprzejrzyste w tym pytaniu.
python
command-line-arguments
argparse
interstar
źródło
źródło
Odpowiedzi:
Tak jak masz, argument w oczekuje wartości po -w w wierszu poleceń. Jeśli chcesz tylko przełączyć przełącznik, ustawiając zmienną
True
lubFalse
zajrzyj na http://docs.python.org/dev/library/argparse.html#action (w szczególności store_true i store_false)gdzie
action='store_true'
implikujedefault=False
.I odwrotnie, możesz mieć
action='store_false'
, co oznaczadefault=True
.źródło
w
Jest zawszeFalse
.Dodanie krótkiego fragmentu umożliwiającego jego wykonanie:
Źródło: myparser.py
Stosowanie:
źródło
Oto szybki sposób, aby to zrobić, nie wymaga niczego poza
sys
... chociaż funkcjonalność jest ograniczona:flag = "--flag" in sys.argv[1:]
[1:]
jest w przypadku, gdy pełna nazwa pliku to--flag
źródło
--flag
będzie się zachowywać nieoczekiwanie, a co gorsza, często kończy się to błędem w zabezpieczeniach na drodze, gdy niezaufane dane stają się przeszedł do argv. W końcu ta metoda po prostu nie powinna zostać wykonana. Prawdziwe parsery arg są po prostu znacznie bardziej niezawodne ...