Sprawdzam, czy katalog istnieje, ale zauważyłem, że os.path.exists
zamiast niego używam os.path.isdir
. Oba działają dobrze, ale jestem ciekawy, jakie są zalety używania isdir
zamiast exists
.
Sprawdzam, czy katalog istnieje, ale zauważyłem, że os.path.exists
zamiast niego używam os.path.isdir
. Oba działają dobrze, ale jestem ciekawy, jakie są zalety używania isdir
zamiast exists
.
Odpowiedzi:
os.path.exists
zwróci również, True
jeśli istnieje zwykły plik o tej nazwie.
os.path.isdir
zwróci tylko True
wtedy, gdy ścieżka istnieje i jest katalogiem lub dowiązaniem symbolicznym do katalogu.
os.path.isdir('.ipynb_checkpoints')
prawdziwie
Tak jak to brzmi: jeśli ścieżka istnieje, ale jest plikiem, a nie katalogiem, isdir
zwróci False
. Tymczasem exists
powróci True
w obu przypadkach.
os.path.isdir () sprawdza, czy ścieżka istnieje i czy jest katalogiem i zwraca wartość TRUE dla przypadku.
Podobnie os.path.isfile () sprawdza, czy ścieżka istnieje i jest plikiem, i zwraca wartość TRUE dla sprawy.
Ponadto os.path.exists () sprawdza, czy ścieżka istnieje i nie dba o to, czy ścieżka wskazuje na plik lub katalog i zwraca wartość TRUE w każdym z przypadków.
Przez większość czasu jest tak samo.
Ale ścieżka może istnieć fizycznie, podczas gdy path.exists()
zwraca False. Dzieje się tak, jeśli os.stat () zwraca False dla tego pliku.
Jeśli ścieżka istnieje fizycznie, path.isdir()
zawsze zwróci True. To nie zależy od platformy.
isdir()
nie mogę wiedzieć, czy katalog istnieje.
os.path.exists (path) Zwraca wartość True, jeśli ścieżka odnosi się do istniejącej ścieżki. Istniejąca ścieżka może być zwykłymi plikami ( http://en.wikipedia.org/wiki/Unix_file_types#Regular_file ), ale także plikami specjalnymi (np. Katalogiem). W istocie ta funkcja zwraca prawdę, jeśli podana ścieżka istnieje w systemie plików w jakiejkolwiek formie (niezależnie od kilku wyjątków, takich jak uszkodzone dowiązania symboliczne).
Z kolei os.path.isdir (path) zwróci wartość true tylko wtedy, gdy ścieżka wskazuje na katalog
os.path.isdir
zwraca prawdę na dowiązaniu symbolicznym.