Korzystam z Pythona, aby utworzyć konfigurację ustawień projektu, ale potrzebuję pomocy w uzyskaniu argumentów wiersza poleceń.
Próbowałem tego na terminalu:
$python myfile.py var1 var2 var3
W moim pliku Python chcę używać wszystkich wprowadzanych zmiennych.
python
command-line
ParisNakitaKejser
źródło
źródło
Odpowiedzi:
Samouczek języka Python wyjaśnia :
Mówiąc dokładniej, jeśli uruchomisz
python example.py one two three
:źródło
poda ci listę argumentów (bez nazwy pliku python)
źródło
[1:]
znaczy[1:]
górę, ponieważ pierwszym argumentemsys.argv
jest domyślnie nazwa pliku Pythona, na przykład uruchomionegotestrun.py
.Gorąco polecam,
argparse
który pochodzi z Python 2.7 i nowszych.argparse
Moduł zmniejsza kod płytkę kocioł i sprawia, że Twój kod bardziej wytrzymałe, ponieważ moduł obsługuje wszystkie przypadki standardowe użytkowania (w tym podpoleceń), generuje pomoc i wykorzystanie dla Ciebie, kontrole i zdezynfekować wejście użytkownika - wszystkie rzeczy trzeba się martwić, kiedy stosująsys.argv
podejście. I to za darmo (wbudowane).Oto mały przykład:
i dane wyjściowe dla
python prog.py -h
i
python prog.py 1
ponieważ, jak można się spodziewać:źródło
parser.add_argument('var3', nargs='?', type=int, default=3)
var3 to opcjonalny parametr, jeśli nie określisz wartości w wierszu polecenia, możesz uzyskać dostęp do var3 w kodzie, wartość domyślna dla var3 = 3Kod Python:
Wezwanie:
Wynik:
źródło
Możesz użyć,
sys.argv
aby uzyskać argumenty jako listę.Jeśli potrzebujesz dostępu do poszczególnych elementów, możesz użyć
gdzie
i
jest indeksem,0
daje nazwę wykonywanego pliku python. Wszelkie kolejne indeksy są przekazywanymi argumentami.źródło
Jeśli nazwiesz to tak:
$ python myfile.py var1 var2 var3
Podobnie jak w przypadku macierzy,
sys.argv[0]
które są zawsze bieżącym katalogiem roboczym.źródło
sys.argv[0]
nie jest bieżącym katalogiem roboczym. Jest to nazwa wykonywanego pliku.Kilka dodatkowych rzeczy, o których mogę myśleć.
Jak powiedział @allsyed, sys.argv podaje listę komponentów (w tym nazwę programu), więc jeśli chcesz poznać liczbę elementów przekazywanych przez wiersz poleceń, możesz użyć len (), aby to ustalić. Na tej podstawie możesz zaprojektować komunikaty o wyjątkach / błędach, jeśli użytkownik nie przekaże określonej liczby parametrów.
Również jeśli szukasz lepszego sposobu na obsługę argumentów wiersza poleceń, sugeruję, aby spojrzeć na https://docs.python.org/2/howto/argparse.html
źródło