/ / Python argparse nierozpoznane argumenty - python, argparse

Python argparse nierozpoznane argumenty - python, argparse

Próbuję użyć argparse analizować argumenty wiersza poleceń. Oto mój kod:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import argparse

def create_parser():
parser = argparse.ArgumentParser()
parser.add_argument("--allow_ips", nargs="*")
return parser

if __name__ == "__main__":
parser = create_parser()
namespace = parser.parse_args()

Kiedy skrypt jest wykonywany w ten sposób, argparse narzeka na nierozpoznane argumenty.

./prog.py --allow_ips=192.168.0.10 192.168.0.11 192.168.0.12

Ale kiedy skrypt zostanie wykonany w ten sposób, argparse jest spełniony.

./prog.py --allow_ips 192.168.0.10 192.168.0.11 192.168.0.12

Jak powinienem zmienić mój kod, aby "=" można było użyć na liście argumentów?

Odpowiedzi:

4 dla odpowiedzi № 1

Według Dokumentacja argparse, przechodzący * w nargs argument oznacza

Wszystkie obecne argumenty wiersza polecenia są gromadzone na liście.

Kiedy wywołujesz swój program bez znak równości, wszystkie trzy adresy IP są uważane za część --allow_ips argument; będą dostępne dla twojego programu na liście.

Kiedy wywołujesz swój program z znak równości, tylko pierwszy adres IP jest uważany za część --allow_ips argument. argparse następnie próbuje przeanalizować drugi i trzeci adres IP. Ale nie może, ponieważ twój program nie przyjmuje żadnych argumentów pozycyjnych. Więc argparse zgłasza wyjątek.