kod źródłowy: Lib/posixpath.py (dla POSIX) andLib/ntpath.py (Dla Windows NT).
ten moduł implementuje kilka przydatnych funkcji w nazwach ścieżek. Aby odczytać lub zapisać pliki patrz open()
, a aby uzyskać dostęp do systemu plików patrz modułos
. Parametry ścieżki mogą być przekazywane jako ciągi znaków lub bajty. Aplikacje są zachęcane do reprezentowania nazw plików jako ciągów znaków (Unicode). Niestety, niektóre nazwy plików mogą nie być reprezentowane jako ciągi znaków w systemie Unix, więc aplikacje, które muszą obsługiwać nazwy plików w systemie Unix, powinny używać obiektów bajtów do reprezentowania nazw ścieżek. Vice versa, używanie obiektów bajtowych nie może reprezentować wszystkich nazw plików w systemie Windows (w standardowym kodowaniu mbcs
), dlatego Windowsapplications powinno używać obiektów string, aby uzyskać dostęp do wszystkich plików.
w przeciwieństwie do powłoki uniksowej, Python nie wykonuje żadnych automatycznych rozszerzeń ścieżek.Funkcje takie jak expanduser()
i expandvars()
mogą być wywoływane domyślnie, gdy aplikacja chce rozszerzyć ścieżkę podobną do powłoki. (Patrz także moduł glob
.)
Patrz także
moduł pathlib
oferuje obiekty ścieżki wysokiego poziomu.
Notatka
wszystkie te funkcje akceptują tylko bajty lub tylko obiekty łańcuchowe jako parametry. Wynikiem jest obiekt tego samego typu, jeśli zwracana jest ścieżka lub nazwa pliku.
Uwaga
Ponieważ różne systemy operacyjne mają różne konwencje nazw ścieżek, istnieje kilka wersji tego modułu w bibliotece standardowej. Modułos.path
jest zawsze modułem ścieżki odpowiednim dla systemu operacyjnego, na którym działa Python, i dlatego można go używać dla ścieżek lokalnych. Można jednak również importować i używać poszczególnych modułów, jeśli chcesz manipulować ścieżką, która jest zawsze w jednym z różnych formatów. Wszystkie mają ten sam interfejs:
-
posixpath
dla ścieżek w stylu UNIX -
ntpath
dla ścieżek Windows
zmieniono w wersji 3.8: exists()
, lexists()
, isdir()
, isfile()
,islink()
, i ismount()
teraz zwraca False
zamiast używać wyjątku dla ścieżek, które zawierają znaki lub bajty, które mogą być reprezentowane na poziomie systemu operacyjnego.
os.path.
abspath
(path)¶
zwraca znormalizowaną wersję ścieżki pathname. W większości platform jest to równoważne wywołaniu funkcji normpath()
asfollows: normpath(join(os.getcwd(), path))
.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
basename
(path)¶
zwraca podstawową nazwę pathname path. Jest to drugi element par zwracany przez przekazanie ścieżki do funkcji split()
. Zauważ, że wynik tej funkcji jest inny niż w uniksowym programie basename; gdzie basename dla'/foo/bar/'
zwraca 'bar'
, funkcja basename()
zwraca łańcuch anulowany (''
).
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
commonpath
(paths)¶
zwraca najdłuższą wspólną ścieżkę podrzędną każdej ścieżki w sequencepaths. Raise ValueError
jeśli ścieżki zawierają zarówno bezwzględne, jak i względne nazwy ścieżek, ścieżki znajdują się na różnych dyskach lub jeśli ścieżki są puste. W przeciwieństwie do commonprefix()
, zwraca ścieżkę avalid.
Dostępność: Unix, Windows.
nowość w wersji 3.5.
zmiana w wersji 3.6: akceptuje sekwencję obiektów podobnych do ścieżki.
os.path.
commonprefix
(list)¶
zwraca najdłuższy prefiks ścieżki (zapisany znak po znaku), który jest poprawą wszystkich ścieżek na liście. Jeżeli lista jest pusta, zwraca pusty łańcuch (''
).
Uwaga
ta funkcja może zwracać nieprawidłowe ścieżki, ponieważ działa naraz. Aby uzyskać prawidłową ścieżkę, zobaczcommonpath()
.
>>> os.path.commonprefix()'/usr/l'>>> os.path.commonpath()'/usr'
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
dirname
(path)¶
zwraca nazwę katalogu pathname path. Jest to pierwszy element pary zwracany przez przejście ścieżki do funkcji split()
.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
exists
(path)¶
zwraca True
jeśli path odnosi się do istniejącej ścieżki lub deskryptora openfile. Zwraca False
dla uszkodzonych dowiązań symbolicznych. Na niektórych platformach funkcja ta może zwrócić False
, jeśli nie przyznano uprawnień do wykonania os.stat()
na żądanym pliku, nawet jeśli ścieżka fizycznie istnieje.
zmieniono w wersji 3.3: ścieżka może być teraz liczbą całkowitą: True
jest zwracana, jeśli jest to deskryptor otwartego pliku, False
w przeciwnym razie.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
lexists
(path)¶
zwraca True
jeśli path odnosi się do istniejącej ścieżki. Zwraca True
dla dowiązań symbolicznych. Odpowiednik exists()
na platformach os.lstat()
.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
expanduser
(ścieżka)¶
w systemach Unix i Windows zwraca argument z początkowym składnikiem ~
lub~user
zastąpionym przez katalog domowy tego użytkownika.
w systemie Unix początkowa wartość ~
jest zastępowana zmienną środowiskową HOME
, jeśli jest ustawiona; w przeciwnym razie katalog domowy bieżącego użytkownika jest wyszukiwany w katalogu password przez wbudowany Moduł pwd
. Inicjał ~user
jest wyszukiwany bezpośrednio w katalogu haseł.
w systemie Windows, USERPROFILE
będzie używany, jeśli jest ustawiony, w przeciwnym razie zostanie użyta kombinacja HOMEPATH
i HOMEDRIVE
. Początkowy~user
jest obsługiwany przez usunięcie ostatniego komponentu katalogu ze ścieżki createduser pochodzącej powyżej.
jeśli rozszerzenie nie powiedzie się lub jeśli ścieżka nie zaczyna się tyldą, ścieżka jest odwracana bez zmian.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
zmiana w wersji 3.8: nie używa już HOME
w systemie Windows.
os.path.
expandvars
(path)¶
zwraca argument z rozwiniętymi zmiennymi środowiskowymi. Podłańcuchy formularza$name
lub ${name}
są zastępowane wartością zmiennej środowiska. Zniekształcone nazwy zmiennych i odwołania do nieistniejących zmiennych pozostają bez zmian.
w systemie Windows oprócz $name
i ${name}
obsługiwane są rozszerzenia%name%
.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
getatime
(path)¶
zwraca czas ostatniego dostępu do path. Wartość zwracana jest liczbą zmiennoprzecinkową określającą ilość sekund od epoki (patrz moduł time
). Podnieś OSError
, jeśli plik nie istnieje lub jest niedostępny.
os.path.
getmtime
(path)¶
zwraca czas ostatniej modyfikacji ścieżki. Wartością zwracaną jest Liczba zmiennoprzecinkowa określająca ilość sekund od epoki (patrz moduł time
).Podnieś OSError
, jeśli plik nie istnieje lub jest niedostępny.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
getctime
(path)¶
zwraca czas ctime systemu, który na niektórych systemach (jak Unix) jest czasem ostatniej zmiany metadanych, a na innych (jak Windows)jest czasem utworzenia ścieżki.Wartością zwracaną jest liczba określająca ilość sekund od epoki (moduł seethe time
). Podnieś OSError
, jeśli plik nie istnieje lub jest niedostępny.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
getsize
(path)¶
zwraca rozmiar, w bajtach, path. Podnieś OSError
, jeśli plik nie istnieje lub jest niedostępny.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
isabs
(path)¶
zwraca True
jeśli path jest ścieżką absolutną. W systemie Unix oznacza to, że rozpoczyna się ukośnikiem, w systemie Windows zaczyna się ukośnikiem (wstecz)po odcięciu potencjalnej litery dysku.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
isfile
(path)¶
zwraca True
jeśli path jest zwykłym plikiem existing
.Następuje to po dowiązaniach symbolicznych, więc zarówno islink()
, jak i isfile()
mogą być prawdziwe dla tej samej ścieżki.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
isdir
(path)¶
zwraca True
jeśli path jest katalogiem existing
. Podąża za dowiązaniami symbolicznymi, więc zarówno islink()
, jak i isdir()
mogą być prawdziwe dla tej samej ścieżki.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
islink
(path)¶
zwraca True
jeśli path odnosi się do katalogu existing
, który jest dowiązaniem symbolicznym. Zawsze False
, jeśli dowiązania symboliczne nie są obsługiwane przez środowisko wykonawcze Pythona.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
ismount
(path)¶
Return True
if pathname path is a mount point: a point in afile system where a different file system has been mounted. W POSIX funkcja sprawdza, czy rodzic path, path/..
, znajduje się na innym urządzeniu niż path, czy też path/..
i path wskazują na ten sam węzeł na tym samym urządzeniu-powinno to wykryć punkty montowania dla wszystkich wariantów UNIX i POSIX. Nie jest w stanie niezawodnie wykryć montowań bind w tym samym systemie plików. W systemie Windows litera dysku root i udostępnij UNC są zawsze punktami montowania, a dla każdej innej ścieżki GetVolumePathName
nazywa się, aby sprawdzić, czy różni się od ścieżki wejściowej.
nowość w wersji 3.4: Obsługa wykrywania punktów montowania innych niż root w systemie Windows.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
join
(path, * paths)¶
inteligentnie łączy jeden lub więcej składników ścieżki. Zwracana wartość tokonkatenacja ścieżki i wszystkich elementów * ścieżek z dokładnie onedirectory separator (os.sep
) po każdej niepustej części z wyjątkiem theast, co oznacza, że wynik zakończy się separatorem tylko wtedy, gdy ostatnia część jest pusta. Jeśli komponent jest ścieżką absolutną, wszystkie poprzednie komponenty są odrzucane, a dołączanie kontynuuje się z komponentu ścieżki absolutnej.
w systemie Windows litera dysku nie jest resetowana, gdy napotkany jest komponent ścieżki bezwzględnej(np. r'\foo'
). Jeśli komponent zawiera driveletter, wszystkie poprzednie komponenty są wyrzucane, a litera dysku jest ustawiona. Zauważ, że ponieważ dla każdego dysku istnieje bieżący katalog,os.path.join("c:", "foo")
reprezentuje ścieżkę względem bieżącego katalogu na dysku C:
(c:foo
), a nie c:\foo
.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki dla path I paths.
os.path.
normcase
(path)¶
normalizuje przypadek nazwy ścieżki. W systemie Windows Konwertuj wszystkie znaki w ścieżce na małe litery, a także Konwertuj ukośniki do przodu na ukośniki do tyłu.W innych systemach operacyjnych zwróć ścieżkę bez zmian.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
normpath
(path)¶
normalizuje nazwę ścieżki przez zwijanie zbędnych separatorów i up-level tak, że A//B
, A/B/
, A/./B
i A/foo/../B
wszystkich A/B
. Ta manipulacja łańcuchem znaków może zmienić znaczenie ścieżki zawierającej dowiązania symboliczne. W systemie Windows konwertuje ukośniki do przodu na ukośniki do tyłu. Aby znormalizować przypadek, użyj normcase()
.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
realpath
(path)¶
zwraca kanoniczną ścieżkę podanej nazwy pliku, eliminując wszelkie symboliczne linki napotkane w ścieżce (jeśli są obsługiwane przez system operacyjny).
Uwaga
gdy pojawią się cykle dowiązań symbolicznych, zwracana ścieżka będzie jednym z elementów cyklu, ale nie ma gwarancji, który z nich będzie.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
zmieniono w wersji 3.8: dowiązania symboliczne i połączenia są teraz rozwiązywane w systemie Windows.
os.path.
relpath
(path, start=os.curdir)¶
zwraca względną ścieżkę do ścieżki z bieżącego katalogu lub z opcjonalnego katalogu startowego. Jest to obliczanie ścieżki: system plików nie jest dostępny w celu potwierdzenia istnienia lub natury ścieżki lub startu.
start domyślnie os.curdir
.
Dostępność: Unix, Windows.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
samefile
(path1, path2)¶
zwraca True
jeśli oba argumenty nazwy ścieżki odnoszą się do tego samego pliku lub katalogu.Jest to określane przez numer urządzenia i numer i-węzła i powoduje wystąpienie wyjątku, jeśli wywołanie os.stat()
dla którejkolwiek ze ścieżek nie powiedzie się.
Dostępność: Unix, Windows.
zmieniono w wersji 3.2: Dodano obsługę systemu Windows.
zmiana w wersji 3.4: System Windows używa teraz tej samej implementacji, co wszystkie inne platformy.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
sameopenfile
(fp1, fp2)¶
zwraca True
jeśli deskryptory plików fp1 i fp2 odnoszą się do tego samego pliku.
Dostępność: Unix, Windows.
zmieniono w wersji 3.2: Dodano obsługę systemu Windows.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
samestat
(stat1, stat2)¶
zwraca True
jeśli krotki stat1 i stat2 odnoszą się do tego samego pliku.Te struktury mogły zostać zwrócone przez os.fstat()
,os.lstat()
lub os.stat()
. Ta funkcja implementuje porównanie używane przez samefile()
i sameopenfile()
.
Dostępność: Unix, Windows.
zmieniono w wersji 3.4: Dodano obsługę systemu Windows.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
split
(path)¶
podziel ścieżkę pathname na parę, (head, tail)
gdzie tail jest ostatnim składnikiem pathname, a head jest wszystkim, co prowadzi do tego. Część Tail nigdy nie będzie zawierała ukośnika; jeśli ścieżka kończy się ukośnikiem, ogon będzie pusty. Jeśli w ścieżce nie ma ukośnika, head będzie pusty. Jeśli ścieżka jest pusta, zarówno head, jak i tail są puste. Końcowe ukośniki są usuwane z głowy, chyba że jest to główny (tylko jedno lub więcej ukośników). We wszystkich przypadkach join(head, tail)
zwraca ścieżkę do tej samej lokalizacji co path (ale łańcuchy mogą się różnić). Zobacz również funkcje dirname()
ibasename()
.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
splitdrive
(path)¶
podziel ścieżkę pathname na parę (drive, tail)
gdzie drive jest punktem montowania lub pustym łańcuchem. W systemach, które nie używają napędów, napęd zawsze będzie pustym ciągiem. We wszystkich przypadkach drive+ tail
będzie taka sama jak path.
w systemie Windows dzieli nazwę ścieżki na dysk / UNC sharepoint i ścieżkę względną.
jeśli ścieżka zawiera literę dysku, dysk będzie zawierał wszystko do dwukropka włącznie.np. splitdrive("c:/dir")
zwraca ("c:", "/dir")
jeśli ścieżka zawiera ścieżkę UNC, dysk będzie zawierał nazwę hosta i udział, do czwartego separatora, ale nie wliczając.np. splitdrive("//host/computer/dir")
zwraca ("//host/computer", "/dir")
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
splitext
(path)¶
podziel ścieżkę pathname na parę (root, ext)
tak, że root + ext ==path
, a ext jest pusty lub zaczyna się kropką i zawiera co najwyżej jeden okres. Początkowe okresy w nazwie podstawowej są ignorowane; splitext('.cshrc')
zwraca ('.cshrc', '')
.
zmiana w wersji 3.6: akceptuje obiekt podobny do ścieżki.
os.path.
supports_unicode_filenames