Как проверить, является ли путь директорией в Python

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь определять, является ли путь директорией в Python. Это включает в себя различение между файлами и директориями с использованием модуля os.path.

Вы начнете с создания директории и файла, а затем используете функции os.path.isfile() и os.path.isdir() для их идентификации. Затем лабораторная работа будет сосредоточена на функции os.path.isdir() и изучать ее поведение с разными типами путей, предоставляя практическое понимание того, как проверить существование директории в Python.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/FileHandlingGroup -.-> python/file_operations("File Operations") python/PythonStandardLibraryGroup -.-> python/os_system("Operating System and System") subgraph Lab Skills python/conditional_statements -.-> lab-559557{{"Как проверить, является ли путь директорией в Python"}} python/build_in_functions -.-> lab-559557{{"Как проверить, является ли путь директорией в Python"}} python/standard_libraries -.-> lab-559557{{"Как проверить, является ли путь директорией в Python"}} python/file_operations -.-> lab-559557{{"Как проверить, является ли путь директорией в Python"}} python/os_system -.-> lab-559557{{"Как проверить, является ли путь директорией в Python"}} end

Различие между файлами и директориями

На этом этапе вы научитесь различать файлы и директории с использованием Python. Это фундаментальный навык для любого программиста на Python, так как он позволяет писать программы, которые могут взаимодействовать с файловой системой надежно и устойчиво.

Для начала создадим директорию и файл в вашей директории ~/project. Откройте WebIDE, а затем откройте терминал.

Сначала создайте директорию с именем my_directory:

mkdir my_directory

Затем создайте пустой файл с именем my_file.txt:

touch my_file.txt

Теперь, когда у вас есть директория и файл, вы можете использовать Python для определения, что является чем.

Откройте редактор кода в WebIDE и создайте новый файл с именем check_type.py в директории ~/project. Добавьте в файл следующий код:

import os

file_path = "my_file.txt"
directory_path = "my_directory"

if os.path.isfile(file_path):
    print(f"{file_path} is a file")
else:
    print(f"{file_path} is not a file")

if os.path.isdir(directory_path):
    print(f"{directory_path} is a directory")
else:
    print(f"{directory_path} is not a directory")

Этот код использует функции os.path.isfile() и os.path.isdir() для проверки, являются ли заданные пути файлами или директориями соответственно.

Сохраните файл check_type.py.

Теперь запустите скрипт из терминала:

python check_type.py

Вы должны увидеть следующий вывод:

my_file.txt is a file
my_directory is a directory

Это подтверждает, что Python-скрипт правильно идентифицирует my_file.txt как файл и my_directory как директорию.

Тестирование с использованием os.path.isdir()

На предыдущем этапе вы научились различать файлы и директории, используя как функцию os.path.isfile(), так и os.path.isdir(). На этом этапе мы сосредоточимся конкретно на функции os.path.isdir() и исследуем ее поведение с разными типами путей.

Функция os.path.isdir() из модуля os.path в Python используется для проверки, является ли заданный путь существующей директорией. Она возвращает True, если путь представляет собой директорию, и False в противном случае. Эта функция особенно полезна, когда вам нужно убедиться, что определенный путь указывает на директорию перед выполнением операций, специфичных для директорий.

Давайте изменим файл check_type.py, который вы создали на предыдущем этапе, чтобы сосредоточиться только на функции os.path.isdir(). Откройте файл check_type.py в редакторе кода WebIDE и измените его содержимое следующим образом:

import os

directory_path = "my_directory"
file_path = "my_file.txt"
nonexistent_path = "nonexistent_directory"

if os.path.isdir(directory_path):
    print(f"{directory_path} is a directory")
else:
    print(f"{directory_path} is not a directory")

if os.path.isdir(file_path):
    print(f"{file_path} is a directory")
else:
    print(f"{file_path} is not a directory")

if os.path.isdir(nonexistent_path):
    print(f"{nonexistent_path} is a directory")
else:
    print(f"{nonexistent_path} is not a directory")

В этом измененном скрипте мы проверяем три разных пути:

  • my_directory: Это существующая директория, которую вы создали на предыдущем этапе.
  • my_file.txt: Это существующий файл, который вы создали на предыдущем этапе.
  • nonexistent_path: Это путь, который не существует.

Сохраните файл check_type.py.

Теперь запустите скрипт из терминала:

python check_type.py

Вы должны увидеть следующий вывод:

my_directory is a directory
my_file.txt is not a directory
nonexistent_directory is not a directory

Этот вывод показывает, что функция os.path.isdir() правильно идентифицирует my_directory как директорию и возвращает False как для файла my_file.txt, так и для несуществующего пути nonexistent_directory. Это происходит потому, что функция os.path.isdir() возвращает True только в том случае, если путь существует и является директорией.

Это упражнение подчеркивает важность проверки того, что путь представляет собой директорию, прежде чем пытаться выполнить операции, специфичные для директорий.

Проверка с использованием pathlib.Path.is_dir()

На предыдущем этапе вы использовали функцию os.path.isdir() для проверки, является ли путь директорией. Теперь давайте рассмотрим другой способ достичь того же результата с использованием модуля pathlib, который предоставляет объектно-ориентированный подход к путям в файловой системе.

Модуль pathlib предлагает класс Path, представляющий пути в файловой системе. Этот класс имеет несколько методов для взаимодействия с файлами и директориями, в том числе метод is_dir(), который проверяет, является ли путь директорией.

Для использования pathlib сначала нужно импортировать класс Path из модуля pathlib. Затем можно создать объект Path, представляющий путь, который вы хотите проверить. Наконец, можно вызвать метод is_dir() на объекте Path, чтобы определить, является ли он директорией.

Откройте файл check_type.py в редакторе кода WebIDE и измените его содержимое следующим образом:

from pathlib import Path

directory_path = Path("my_directory")
file_path = Path("my_file.txt")
nonexistent_path = Path("nonexistent_directory")

if directory_path.is_dir():
    print(f"{directory_path} is a directory")
else:
    print(f"{directory_path} is not a directory")

if file_path.is_dir():
    print(f"{file_path} is a directory")
else:
    print(f"{file_path} is not a directory")

if nonexistent_path.is_dir():
    print(f"{nonexistent_path} is a directory")
else:
    print(f"{nonexistent_path} is not a directory")

В этом скрипте мы создаем объекты Path для my_directory, my_file.txt и nonexistent_directory. Затем мы используем метод is_dir() для проверки, является ли каждый путь директорией.

Сохраните файл check_type.py.

Теперь запустите скрипт из терминала:

python check_type.py

Вы должны увидеть следующий вывод:

my_directory is a directory
my_file.txt is not a directory
nonexistent_directory is not a directory

Как вы можете видеть, вывод такой же, как на предыдущем этапе при использовании os.path.isdir(). Метод pathlib.Path.is_dir() предоставляет альтернативный, объектно-ориентированный способ проверки, является ли путь директорией.

Использование pathlib может сделать ваш код более читаемым и легким в поддержке, особенно при работе с сложными операциями в файловой системе.

Резюме

В этом практическом занятии (лабораторной работе) вы научились различать файлы и директории в Python с использованием модуля os.path. В частности, вы создали директорию и файл, а затем использовали функции os.path.isfile() и os.path.isdir() для проверки их типов. В рамках практики показано, как использовать эти функции для определения, является ли заданный путь файлом или директорией.