os

Współpraca z systemem operacyjnym: ścieżki, katalogi, pliki i zmienne środowiskowe.

Na tej stronie

Przykład

#
Python
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"))
Wynikzapisany wynik, możesz go sprawdzić
kursy/python/lekcja_01.py
lekcja_01.py
kursy/python
.py
False

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

#
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

#
Katalogi i pliki
Python
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")))
Wynikzapisany wynik, możesz go sprawdzić
['assets', 'plan.txt']
['assets', 'plan_nauki.txt']
['assets']

Wynik zakłada, że katalog projekt wcześniej nie istniał. Dzięki exist_ok=True ponowne uruchomienie nie zgłosi błędu.

Zmienne środowiskowe
Python
import os

mode = os.environ.get("CODEWORLDS_MODE", "development")
debug = os.getenv("CODEWORLDS_DEBUG") == "1"

print(mode, debug)
Wynikzapisany wynik, możesz go sprawdzić
development False

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() albo pathlib wstawią 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

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.