Я перевіряю, чи існує каталог, але я помітив, що використовую os.path.exists
замість os.path.isdir
. Обидва вони працюють чудово, але мені цікаво, які переваги для використання isdir
замість цього exists
.
Я перевіряю, чи існує каталог, але я помітив, що використовую os.path.exists
замість os.path.isdir
. Обидва вони працюють чудово, але мені цікаво, які переваги для використання isdir
замість цього exists
.
Відповіді:
os.path.exists
також повернеться, True
якщо є звичайний файл із таким ім'ям.
os.path.isdir
повернеться, лише True
якщо цей шлях існує і є каталогом або символічним посиланням на каталог.
os.path.isdir('.ipynb_checkpoints')
повертаюся правдою
Так само, як це звучить так: якщо шлях існує, але це файл, а не каталог, isdir
повернеться False
. Тим часом exists
повернеться True
в обох випадках.
os.path.isdir () перевіряє, чи існує шлях та є каталогом, і повертає TRUE для випадку.
Подібним чином, os.path.isfile () перевіряє, чи існує шлях та є файлом, і повертає TRUE для випадку.
І os.path.exists () перевіряє, чи існує шлях, і не має значення, чи шлях вказує на файл чи каталог і повертає TRUE в будь-якому з випадків.
Здебільшого це однаково.
Але шлях може існувати фізично, тоді як path.exists()
повертає False. Це має місце, якщо os.stat () повертає False для цього файлу.
Якщо шлях існує фізично, тоді path.isdir()
завжди буде повертатися True. Це не залежить від платформи.
isdir()
не можу знати, чи існує каталог.
os.path.exists (path) Повертає значення True, якщо шлях посилається на існуючий шлях. Існуючий шлях може бути звичайними файлами ( http://en.wikipedia.org/wiki/Unix_file_types#Regular_file ), а також спеціальні файли (наприклад, каталог). Отже, по суті, ця функція повертає true, якщо вказаний шлях існує у файловій системі в будь-якій формі (незважаючи на кілька винятків, таких як непрацюючі символічні посилання).
os.path.isdir (шлях), у свою чергу, поверне значення true лише тоді, коли шлях вказує на каталог
os.path.isdir
повертається для мене істинним на символічному посиланні.