Sprawdzam, czy katalog istnieje, ale zauważyłem, że os.path.existszamiast niego używam os.path.isdir. Oba działają dobrze, ale jestem ciekawy, jakie są zalety używania isdirzamiast exists.
Sprawdzam, czy katalog istnieje, ale zauważyłem, że os.path.existszamiast niego używam os.path.isdir. Oba działają dobrze, ale jestem ciekawy, jakie są zalety używania isdirzamiast exists.
Odpowiedzi:
os.path.existszwróci również, Truejeśli istnieje zwykły plik o tej nazwie.
os.path.isdirzwróci tylko Truewtedy, 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, isdirzwróci False. Tymczasem existspowróci Truew 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.isdirzwraca prawdę na dowiązaniu symbolicznym.