Mam funkcję:Python 2.7 argparse
def x(a,b,c)
Jak mogę zebrać zmiennej wartości z wiersza poleceń, które pasują do tego wzorca?
python test.py --x_center a --y_center b c
(c
ma, na przykład, 3, 4 lub więcej wartości)
Mam funkcję:Python 2.7 argparse
def x(a,b,c)
Jak mogę zebrać zmiennej wartości z wiersza poleceń, które pasują do tego wzorca?
python test.py --x_center a --y_center b c
(c
ma, na przykład, 3, 4 lub więcej wartości)
można zrobić coś takiego jak to:
import argparse
def x(x_center, y_center, values):
print "X center:", x_center
print "Y center:", y_center
print "Values:", values
def main():
parser = argparse.ArgumentParser(description="Do something.")
parser.add_argument('-x', '--x-center', type=float, required=True)
parser.add_argument('-y', '--y-center', type=float, required=True)
parser.add_argument('values', type=float, nargs='*')
args = parser.parse_args()
x(args.x_center, args.y_center, args.values)
if __name__ == '__main__':
main()
Wypróbuj:
$ python test.py --x-center 1 --y-center 2 3 4 5
X center: 1.0
Y center: 2.0
Values: [3.0, 4.0, 5.0]
Aby korzystać z the argparse
module, zwykle musisz zacząć od funkcji main
(i jakiegoś zestawu znaków, który ją wywołuje). W funkcji main
będziesz potrzebować create an ArgumentParser
. Potem będziesz chciał dodać kilka argumentów.
Aby dodać argument, należy użyć add_argument
.
parser.add_argument('-x', '--x-center', type=float, required=True)
Tutaj dodajemy opcję, -x
, który ma także długą wariant opcji, --x-center
. type
przekazujemy do add_argument
mówi, aby wymagać, aby był float
(i błąd, jeśli nie jest prawidłowy float). Mówimy też argparse
, że jest to wymagane; jeśli nie jest dostarczony, błąd.
parser.add_argument('values', type=float, nargs='*')
To jest tak jak wcześniej, ale ponieważ ciąg przechodzimy do niego nie zaczyna się od myślnika, to zakłada, że nie jest to możliwe, ale raczej argument nie będący opcją. Ponownie, mówimy, że chcemy float
s. nargs
pozwala ci określić, że wymaga więcej niż jednego argumentu. *
określa, że chcemy dowolnej ilości argumentów.
Wreszcie analizujemy wiersz poleceń pod numerem parse_args
. Zwraca obiekt, który będziemy przechowywać.
Następnie można uzyskać dostęp do opcji i argumentów na tym obiekcie args
i wykonać odpowiednie czynności w swoim programie.
Wiersz x (args.x_center, args.y_center, args.values) musi się zmienić na x (args.x, args.y, args.values) w celu prawidłowego uruchomienia –
@ VasiliosAntoniou: Jesteś tego pewien? ? Kod działa tak jak dla mnie, a wprowadzenie zmiany powoduje jego rozbicie. – icktoofay
Tak, jestem pewien, ale to nie ma znaczenia. Przynajmniej oboje mamy działający kod! :) –
o co chodzi? –