os
Współpraca z systemem operacyjnym: ścieżki, katalogi, pliki i zmienne środowiskowe.
Przykład
#import os
path = os.path.join("kursy", "python", "lekcja_01.py")
print(path)
print(os.path.basename(path))
print(os.path.dirname(path))
print(os.path.splitext(path)[1])
print(os.path.exists("brak_takiego_pliku.txt"))Wynik dla Linuksa i macOS. W systemie Windows os.path.join() użyje ukośników wstecznych: kursy\python\lekcja_01.py.
Definicja i zastosowanie
#Moduł os pozwala programowi korzystać z funkcji systemu operacyjnego tak, żeby ten sam kod działał w systemach Windows, Linux i macOS. Znajdziesz w nim funkcje do listowania katalogów (listdir()), tworzenia i usuwania katalogów (makedirs(), rmdir()), usuwania plików i zmiany ich nazw (remove(), rename()) oraz odczytu bieżącego katalogu (getcwd()).
Podmoduł os.path służy do operacji na ścieżkach zapisanych jako napisy. join() łączy części ścieżki separatorem właściwym dla systemu, basename() i dirname() oddzielają nazwę pliku od katalogu, splitext() odcina rozszerzenie, a exists() sprawdza, czy plik istnieje.
Słownik os.environ przechowuje zmienne środowiskowe, w których trzyma się konfigurację i sekrety, na przykład adres bazy danych. Do samych ścieżek w nowym kodzie wygodniejszy jest moduł pathlib, który traktuje ścieżkę jak obiekt.
Składnia
#import os
os.path.join(czesc, …)
os.path.exists(sciezka)
os.listdir(katalog)
os.makedirs(katalog, exist_ok=True)
os.environ.get(nazwa, domyslna)Więcej przykładów
#import os
os.makedirs("projekt/assets", exist_ok=True)
with open("projekt/plan.txt", "w", encoding="utf-8") as file:
file.write("Nauka Pythona")
print(sorted(os.listdir("projekt")))
os.rename("projekt/plan.txt", "projekt/plan_nauki.txt")
print(sorted(os.listdir("projekt")))
os.remove("projekt/plan_nauki.txt")
print(sorted(os.listdir("projekt")))Wynik zakłada, że katalog projekt wcześniej nie istniał. Dzięki exist_ok=True ponowne uruchomienie nie zgłosi błędu.
import os
mode = os.environ.get("CODEWORLDS_MODE", "development")
debug = os.getenv("CODEWORLDS_DEBUG") == "1"
print(mode, debug)Wynik, gdy zmienne CODEWORLDS_MODE i CODEWORLDS_DEBUG nie są ustawione. W terminalu Linuksa lub macOS ustawisz je np. tak: CODEWORLDS_DEBUG=1 python app.py.
Dobre praktyki
#- Nie sklejaj ścieżek przez
+i ukośniki.os.path.join()albopathlibwstawią separator właściwy dla systemu. - Hasła i klucze API trzymaj w zmiennych środowiskowych, a nie w kodzie, i odczytuj je przez
os.environ.get(). os.remove()usuwa plik od razu i na stałe, z pominięciem kosza.
Powiązane hasła
#- pathlibŚcieżki jako obiekty: łączenie operatorem /, odczyt części ścieżki oraz praca z plikami.
- sysDostęp do interpretera: argumenty wiersza poleceń, kończenie programu, wersja Pythona i strumienie.
- open()Otwiera plik do odczytu lub zapisu i zwraca obiekt pliku.
- withMenedżer kontekstu: automatyczne przygotowanie i sprzątanie zasobów.
Widzisz błąd albo brakuje przykładu? Napisz do nas.