2013-02-25 18 views

Odpowiedz

67

os.path.exists również zwróci True, jeśli istnieje zwykły plik o tej nazwie.

os.path.isdir powróci tylko True, jeśli ścieżka istnieje i jest katalogiem.

+1

'os.path.isdir' wraca prawdziwy dla mnie na jego miejsce linku. – Kaz

+0

Otrzymuję 'os.path.isdir ('. Ipynb_checkpoints')' zwracający true – josh

+0

@josh tak to '.ipynb_checkpoints' * jest * katalogiem. –

4

Brzmi tak: jeżeli ścieżka istnieje, ale jest plikiem, a nie katalogiem, isdir zwróci False. Tymczasem exists zwróci True w obu przypadkach.

0

W większości przypadków jest taki sam.

Ale ścieżka może istnieć fizycznie, podczas gdy path.exists() zwraca Fałsz. Jest tak w przypadku, gdy os.stat() zwraca false dla tego pliku.

Jeśli ścieżka istnieje fizycznie, to path.isdir() zawsze zwróci wartość True. To nie zależy od platformy.

+0

Nie jest jasne, co oznacza ten ostatni akapit. Jeśli katalog istnieje fizycznie na zdalnym serwerze, ale nie mam połączenia sieciowego, w którym uruchamiam skrypt, to z pewnością 'isdir()' nie wie, czy katalog istnieje. – LarsH

+0

Jeśli sprawdzasz, czy katalog istnieje na ścieżce UNC, os.path.exists może zwrócić wartość false, gdy faktycznie istnieje (nawet z połączeniem działającym), ale os.path.isdir zwróci poprawną wartość. Dla pliku w prostym przypadku ścieżki UNC powinieneś także użyć os.path.isfile zamiast os.path.exists z tego samego powodu. – miigotu

0

os.path.exists (ścieżka) Zwraca True, jeśli ścieżka odnosi się do istniejącej ścieżki. Istniejąca ścieżka może być zwykłym plikiem (http://en.wikipedia.org/wiki/Unix_file_types#Regular_file), ale także specjalnymi plikami (np. Katalogiem). Zasadniczo funkcja ta zwraca wartość true, jeśli dostarczona ścieżka istnieje w systemie plików w dowolnej postaci (niezależnie od kilku wyjątków, takich jak zepsute dowiązania symboliczne).

os.path.isdir (ścieżka) z kolei zwróci tylko wtedy, kiedy wskazuje ścieżkę do katalogu

+0

To tak naprawdę nie odpowiada na pytanie OP, kto pyta o różnice między tymi dwoma poleceniami. Masz tylko szczegółową. – esqew