sys
Dostęp do interpretera: argumenty wiersza poleceń, kończenie programu, wersja Pythona i strumienie.
Przykład
#import sys
if len(sys.argv) < 2:
print("Użycie: python powitanie.py IMIĘ")
sys.exit(1)
name = sys.argv[1]
print(f"Cześć, {name}!")
print(sys.argv)Cześć, Ania! ['powitanie.py', 'Ania']
Wynik dla polecenia python powitanie.py Ania. Uruchomiony bez argumentu program wypisze instrukcję użycia i zakończy się z kodem 1.
Definicja i zastosowanie
#Moduł sys daje dostęp do informacji i ustawień samego interpretera Pythona. Najczęściej używa się z niego listy sys.argv z argumentami wiersza poleceń oraz funkcji sys.exit(), która kończy program z podanym kodem wyjścia.
sys.argv[0] to nazwa uruchomionego skryptu, a kolejne elementy to argumenty wpisane po niej, zawsze jako napisy. Kod wyjścia 0 oznacza sukces, a każda inna liczba błąd. Odczytują go skrypty powłoki i narzędzia, które uruchamiają Twój program.
Moduł udostępnia też standardowe strumienie sys.stdin, sys.stdout i sys.stderr, wersję interpretera w sys.version_info, nazwę systemu w sys.platform oraz listę katalogów przeszukiwanych przy imporcie w sys.path.
Składnia
#import sys
sys.argv
sys.exit(kod)
sys.version_info
sys.stderrWięcej przykładów
#import sys
if sys.version_info >= (3, 10):
print("Wersja Pythona jest wystarczająca")
else:
print("Ten program wymaga Pythona 3.10 lub nowszego")
print(sys.version_info.major)
print(sys.getrecursionlimit())getrecursionlimit() zwraca maksymalną głębokość wywołań rekurencyjnych, domyślnie 1000.
import sys
def fail(message):
print(f"Błąd: {message}", file=sys.stderr)
sys.exit(1)
print("Wczytuję dane...")
fail("brak pliku kurs.json")
print("Ta linia się nie wykona")Druga linia trafia do strumienia błędów (stderr), więc przekierowanie python app.py > log.txt zapisze do pliku tylko pierwszą. Program kończy się z kodem 1.
Dobre praktyki
#- Do rozbudowanych argumentów wiersza poleceń, z opcjami i automatyczną pomocą, używaj modułu
argparsezamiast ręcznego czytaniasys.argv. - Argumenty z
sys.argvsą napisami. Liczby zamieniaj przezint()i obsłuż niepoprawną wartość. - Komunikaty o błędach wypisuj na
sys.stderr, żeby nie mieszały się z właściwym wynikiem programu.
Powiązane hasła
#- osWspółpraca z systemem operacyjnym: ścieżki, katalogi, pliki i zmienne środowiskowe.
- print()Wypisuje wartości na standardowe wyjście, domyślnie w konsoli.
- input()Wczytuje linię tekstu wpisaną przez użytkownika w konsoli.
- importWczytuje moduł lub wybrane nazwy z modułu do bieżącego pliku.
- raiseZgłasza wyjątek, sygnalizując błąd lub niedozwoloną sytuację.
Widzisz błąd albo brakuje przykładu? Napisz do nas.