Sprawdzam, czy istnieje katalog, ale zauważyłem, że używam path.exists zamiast path.isdir. Oba działają dobrze, ale jestem ciekaw, jakie są zalety korzystania z isdir zamiast istnieć.Python: os.path.exists vs os.path.isdir
Odpowiedz
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.
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.
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.
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
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
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
To tak naprawdę nie odpowiada na pytanie OP, kto pyta o różnice między tymi dwoma poleceniami. Masz tylko szczegółową. – esqew
- 1. Strange `UnicodeEncodeError` użyciem` os.path.exists`
- 2. os.path.isdir() zwraca False, nawet jeśli istnieje folder
- 3. Boo vs C# vs Python?
- 4. python 2.7 vs python 3.1
- 5. Python: string.uppercase vs. string.ascii_uppercase
- 6. Python time.sleep() vs event.wait()
- 7. Python komentarze: # vs. strings
- 8. Python os.pipe vs multiprocessing.Pipe
- 9. C++ vs precyzją Python
- 10. Python: 'import *' vs execfile
- 11. Python vs deskryptor nieruchomości
- 12. Python - pojedynczy vs wielowierszowego REGEX
- 13. Python Class vs. Module Attributes
- 14. Numpy float64 vs Python float
- 15. Python SciPy convolve vs fftconvolve
- 16. Dekoratory Python vs funkcje przechodzące
- 17. Python yield vs Ruby yield
- 18. Python Docstring: raise vs. raiseses
- 19. Python multiprocessing: map vs map_async
- 20. Julia Dataframes vs Pandy Python
- 21. Java vs Python na Hadoop
- 22. PHP password_verify() vs Python bcrypt.hashpw()
- 23. assertEquals vs. assertEqual w python
- 24. Python if: Fałsz vs. 0,0
- 25. python: porównanie deque vs lista
- 26. Python bottle vs uwsgi/bottle vs nginx/uwsgi/bottle
- 27. Python path.exists() return False
- 28. python idastar vs astar solving 8 puzzle
- 29. Python używa globalnego vs określając moduł
- 30. tuple vs list obiektów w python
'os.path.isdir' wraca prawdziwy dla mnie na jego miejsce linku. – Kaz
Otrzymuję 'os.path.isdir ('. Ipynb_checkpoints')' zwracający true – josh
@josh tak to '.ipynb_checkpoints' * jest * katalogiem. –