Перейти к содержимому

Что такое path в python

  • автор:

Модуль os.path

Python 3 логотип

os.path является вложенным модулем в модуль os, и реализует некоторые полезные функции для работы с путями.

os.path.abspath(path) — возвращает нормализованный абсолютный путь.

os.path.basename(path) — базовое имя пути (эквивалентно os.path.split(path)[1]).

os.path.commonprefix(list) — возвращает самый длинный префикс всех путей в списке.

os.path.dirname(path) — возвращает имя директории пути path.

os.path.exists(path) — возвращает True, если path указывает на существующий путь или дескриптор открытого файла.

os.path.expanduser(path) — заменяет ~ или ~user на домашнюю директорию пользователя.

os.path.expandvars(path) — возвращает аргумент с подставленными переменными окружения ($name или $ заменяются переменной окружения name). Несуществующие имена не заменяет. На Windows также заменяет %name%.

os.path.getatime(path) — время последнего доступа к файлу, в секундах.

os.path.getmtime(path) — время последнего изменения файла, в секундах.

os.path.getctime(path) — время создания файла (Windows), время последнего изменения файла (Unix).

os.path.getsize(path) — размер файла в байтах.

os.path.isabs(path) — является ли путь абсолютным.

os.path.isfile(path) — является ли путь файлом.

os.path.isdir(path) — является ли путь директорией.

os.path.islink(path) — является ли путь символической ссылкой.

os.path.ismount(path) — является ли путь точкой монтирования.

os.path.join(path1[, path2[, . ]]) — соединяет пути с учётом особенностей операционной системы.

os.path.normcase(path) — нормализует регистр пути (на файловых системах, не учитывающих регистр, приводит путь к нижнему регистру).

os.path.normpath(path) — нормализует путь, убирая избыточные разделители и ссылки на предыдущие директории. На Windows преобразует прямые слеши в обратные.

os.path.realpath(path) — возвращает канонический путь, убирая все символические ссылки (если они поддерживаются).

os.path.relpath(path, start=None) — вычисляет путь относительно директории start (по умолчанию — относительно текущей директории).

os.path.samefile(path1, path2) — указывают ли path1 и path2 на один и тот же файл или директорию.

os.path.sameopenfile(fp1, fp2) — указывают ли дескрипторы fp1 и fp2 на один и тот же открытый файл.

os.path.split(path) — разбивает путь на кортеж (голова, хвост), где хвост — последний компонент пути, а голова — всё остальное. Хвост никогда не начинается со слеша (если путь заканчивается слешем, то хвост пустой). Если слешей в пути нет, то пустой будет голова.

os.path.splitdrive(path) — разбивает путь на пару (привод, хвост).

os.path.splitext(path) — разбивает путь на пару (root, ext), где ext начинается с точки и содержит не более одной точки.

os.path.supports_unicode_filenames — поддерживает ли файловая система Unicode.

Для вставки кода на Python в комментарий заключайте его в теги

path¶

Возвращает время последнего доступа к файлу или папке, в виде количесвта секунд, прошедших с начала эпохи.

getctime()¶

os.path. getctime ( path ) ¶

Возвращает дату создания файла или папки, в виде количества секунд, прошедших с начала эпохи

getmtime()¶

os.path. getmtime ( path ) ¶

Возвращает время последнего внесения изменения в файл или папку, в виде количесвта секунд, прошедших с начала эпохи

getsize()¶

os.path. getsize ( path ) ¶

Возвращает размер файла или папки

Использование модуля pathlib для манипуляции путями файловых систем в Python 3

Использование модуля pathlib для манипуляции путями файловых систем в Python 3

Python 3 включает модуль pathlib для манипуляции путями файловых систем независимо от операционной системы. pathlib похож на модуль os.path , но pathlib предлагает более развитый и удобный интерфейс по сравнению с os.path .

Мы можем идентифицировать файлы на компьютере с помощью иерархических путей. Например, мы можем идентифицировать файл wave.txt на компьютере с помощью этого пути: /Users/ sammy /ocean/wave.txt . Операционные системы представляют пути несколько по-разному. Windows может представлять путь к файлу wave.txt как C:\Users\ sammy \ocean\wave.txt .

Модуль pathlib может быть полезен, если в программе Python вы создаете или перемещаете файлы в файловой системе, указывая все файлы в файловой системе, совпадающие с данным расширением или шаблоном, или создаете пути файла, соответствующие файловой системе на основе наборов неформатированных строк. Хотя вы можете использовать другие инструменты, например модуль os.path , для выполнения большей части этих задач, модуль pathlib позволяет выполнять эти операции с большей степенью читаемости и минимальным количеством кодов.

В этом обучающем модуле мы рассмотрим некоторые способы использования модуля pathlib для представления и манипуляции путями файловых систем.

Предварительные требования

Чтобы получить максимум знаний из этого обучающего модуля, рекомендуется иметь небольшое представление о программировании на Python 3. Дополнительную информацию можно найти в следующих обучающих руководствах:

Построение экземпляров Path

Модуль pathlib предоставляет несколько классов, но одним из наиболее важных является класс Path . Экземпляры класса Path представляют путь к файлу или каталогу в файловой системе вашего компьютера.

Например, следующий код инстанциирует экземпляр Path , который представляет часть пути к файлу wave.txt :

from pathlib import Path wave = Path("ocean", "wave.txt") print(wave) 

Если запустить этот код, результат будет выглядеть следующим образом:

Output
ocean/wave.txt

from pathlib import Path делает класс Path доступным для нашей программы. Затем Path("ocean", "wave.txt") инстанциирует новый экземпляр Path . Вывод отображает, что Python добавил соответствующий разделитель оперативной системы / между двумя заданными нами компонентами пути "ocean" и "wave.txt" .

Примечание. В зависимости от операционной системы вывод может немного отличаться от примеров, приведенных в данном руководстве. Если вы работаете в Windows, например, ваш вывод для этого первого примера может выглядеть как ocean\wave.txt .

В настоящее время объект Path , назначенный на переменную wave , содержит относительный путь. Другими словами, ocean/wave.txt может существовать в нескольких местах в нашей файловой системе. В качестве примера он может существовать в /Users/ user_1 /ocean/wave.txt или /Users/ user_2 /research/ocean/wave.txt , но мы не указали к какому из них конкретно мы обращаемся. Абсолютный путь, напротив, однозначно четко указывает на расположение в файловой системе.

Вы можете использовать Path.home() для получения абсолютного пути к домашнему каталогу текущего пользователя:

home = Path.home() wave_absolute = Path(home, "ocean", "wave.txt") print(home) print(wave_absolute) 

Если запустить этот код, результат будет выглядеть приблизительно следующим образом:

Output
/Users/sammy /Users/sammy/ocean/wave.txt

Примечание. Как упоминалось ранее, вывод будет зависеть от операционной системы. Ваш домашний каталог также будет отличаться от /Users/ sammy .

Path.home() возвращает экземпляр Path с абсолютным путем в домашний каталог текущего пользователя. Затем мы передадим этот экземпляр Path и строки "ocean" и "wave.txt" в другой конструктор Path , чтобы создать абсолютный путь к файлу wave.txt . Вывод показывает, что первая строка — это домашний каталог, а вторая строка — домашний каталог плюс ocean/wave.txt .

Этот пример также иллюстрирует важную функцию класса Path : конструктор Path принимает обе строки и ранее существовавшие объекты Path .

Давайте более детально рассмотрим поддержку строк и объектов Path в конструкторе Path :

shark = Path(Path.home(), "ocean", "animals", Path("fish", "shark.txt")) print(shark) 

Если запустить этот код Python, результат будет выглядеть следующим образом:

Output
/Users/sammy/ocean/animals/fish/shark.txt

shark — это Path к файлу, который мы создали с помощью объектов Path ( Path.home() и Path("fish", "shark.txt") и строк "ocean" и "animals" ). Конструктор Path интеллектуально обрабатывает оба типа объектов и аккуратно соединяет их с помощью соответствующего разделителя операционной системы, в данном случае / .

Доступ к атрибутам файла

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

Мы можем использовать атрибуты name и suffix для доступа к именам и расширениям файлов:

wave = Path("ocean", "wave.txt") print(wave) print(wave.name) print(wave.suffix) 

Запустив этот код, мы получим вывод, аналогичный следующему:

Output
/Users/sammy/ocean/wave.txt wave.txt .txt

Этот вывод показывает, что имя файла в конце нашего пути — wave.txt , а расширение файла — .txt .

Экземпляры Path также предлагают функцию with_name , позволяющую беспрепятственно создавать новый объект Path с другим именем:

wave = Path("ocean", "wave.txt") tides = wave.with_name("tides.txt") print(wave) print(tides) 

Если запустить его, результат будет выглядеть следующим образом:

ocean/wave.txt ocean/tides.txt 

Код сначала создает экземпляр Path , указывающий на файл с именем wave.txt . Затем мы вызовем метод with_name в wave , чтобы вернуть второй экземпляр Path , указывающий на новый файл с именем tides.txt . Часть каталога ocean/ остается неизмененной и оставляет финальный путь в виде ocean/tides.txt

Доступ к предшествующим объектам

Иногда полезно получить доступ к каталогам, содержащим определенный путь. Давайте рассмотрим пример:

shark = Path("ocean", "animals", "fish", "shark.txt") print(shark) print(shark.parent) 

Если запустить этот код, результат будет выглядеть следующим образом:

Output
ocean/animals/fish/shark.txt ocean/animals/fish

Атрибут parent в экземпляре Path возвращает ближайшего предшественника пути данного файла. В этом случае он возвращает каталог с файлом shark.txt : ocean/animals/fish .

Мы можем получать доступ к атрибуту parent несколько раз в строке, чтобы пройти вверх по корневому дереву данного файла:

shark = Path("ocean", "animals", "fish", "shark.txt") print(shark) print(shark.parent.parent) 

Если мы выполним этот код, мы увидим следующие результаты:

Output
ocean/animals/fish/shark.txt ocean/animals

Вывод будет похож на предыдущий вывод, но теперь мы перешли на уровень выше, получив доступ к .parent во второй раз. Два каталога от shark.txt — это каталог ocean/animals .

Использование шаблона поиска для списка файлов

Также можно использовать класс Path для списка файлов с помощью метода glob .

Допустим, у нас есть структура каталога, которая выглядит следующим образом:

└── ocean ├── animals │ └── fish │ └── shark.txt ├── tides.txt └── wave.txt 

Каталог ocean содержит файлы tides.txt и wave.txt . У нас есть файл с именем shark.txt , вложенный в каталог ocean , каталог animals и каталог fish : ocean/animals/fish .

Чтобы перечислить все файлы .txt в каталоге ocean , можно сказать:

for txt_path in Path("ocean").glob("*.txt"): print(txt_path) 

Этот код произведет следующий вывод:

Output
ocean/wave.txt ocean/tides.txt

Шаблон поиска "*.txt" находит все файлы, заканчивающиеся на .txt . Поскольку пример кода выполняет этот поиск в каталоге ocean , он возвращает два файла .txt в каталоге ocean : wave.txt и tides.txt .

Примечание. Если вы хотите дублировать выводы, указанные в данном примере, вам потребуется имитировать структуру каталога, изображенную здесь, на компьютере.

Также мы можем использовать метод glob рекурсивно. Чтобы перечислить все файлы .txt в каталоге ocean и все его подкаталоги, мы можем сказать:

for txt_path in Path("ocean").glob("**/*.txt"): print(txt_path) 

Если запустить этот код, результат будет выглядеть следующим образом:

Output
ocean/wave.txt ocean/tides.txt ocean/animals/fish/shark.txt

Часть ** шаблона поиска будет соответствовать этому каталогу и всем каталогам под ним рекурсивно. Поэтому в выводе у нас будут не только файлы wave.txt и tides.txt , но также мы получим файл shark.txt , вложенный в ocean/animals/fish .

Вычисление относительных путей

Мы можем использовать метод Path.relative_to для вычисления путей, относящихся друг к другу. Метод relative_to полезен, если, например, вы хотите получить часть длинного пути файла.

Рассмотрите следующий код:

shark = Path("ocean", "animals", "fish", "shark.txt") below_ocean = shark.relative_to(Path("ocean")) below_animals = shark.relative_to(Path("ocean", "animals")) print(shark) print(below_ocean) print(below_animals) 

Если запустить его, результат будет выглядеть следующим образом:

Output
ocean/animals/fish/shark.txt animals/fish/shark.txt fish/shark.txt

Метод relative_to возвращает новый объект Path , относящийся к данному аргументу. В нашем примере мы вычислим Path к shark.txt , относящийся к каталогу ocean , а затем относящийся к обоим каталогам ocean и animals .

Если relative_to не сможет вычислить ответ, поскольку мы даем ему не связанный путь, он выдаст ValueError :

shark = Path("ocean", "animals", "fish", "shark.txt") shark.relative_to(Path("unrelated", "path")) 

Мы получим исключение ValueError , возникшее из этого кода, которое будет выглядеть следующим образом:

Output
Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/Python3.8/pathlib.py", line 899, in relative_to raise ValueError(" does not start with " ValueError: 'ocean/animals/fish/shark.txt' does not start with 'unrelated/path'

unrelated/path не является частью ocean/animals/fish/shark.txt , поэтому Python не сможет вычислить относительный путь.

Заключение

Модуль pathlib — это мощная часть стандартной библиотеки Python, которая позволяет нам быстро манипулировать путями файловых систем в любой операционной системе. В этом обучающем модуле мы научились использовать некоторые ключевые утилиты pathlib для доступа к атрибутам файла, спискам файлов с помощью шаблонов поиска и переходить к родительским файлам и каталогам.

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

Если вас интересуют другие библиотеки Python, ознакомьтесь со следующими обучающими модулями:

  • Использование модуля collections в Python 3
  • Использование модуля sqlite3 в Python 3
  • Использование ThreadPoolExecutor в Python 3

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Краткий обзор раздела: Модуль os.path в Python, операции с путями ОС

Модуль os.path реализует некоторые полезные функции для манипулирования путями файловой системы. Параметры пути могут быть переданы в виде строк или байтов. Приложениям рекомендуется представлять имена файлов в виде (Unicode) символьных строк.

Функция abspath() модуля os.path в Python.

Функция `abspath()` модуля `os.path` вернет нормализованную абсолютную версию пути. На большинстве платформ это эквивалентно вызову функции `os.path.normpath()` следующим образом: `os.path.normpath(join(os.getcwd(),path))`.

Функция basename() модуля os.path в Python.

Функция `basename()` модуля `os.path` возвращает базовое имя пути. Это второй элемент пары, возвращаемый путем передачи пути к функции `os.path.split()`.

Функция commonpath() модуля os.path в Python.

Функция `commonpath()` модуля `os.path` возвращает самый длинный общий подпуть каждого пути в последовательности `paths`.

Функция commonprefix() модуля os.path в Python.

Функция `commonprefix()` модуля `os.path` возвращает самый длинный префикс пути, расчитанный посимвольно, который является префиксом всех путей в списке `list`. Если список пуст, то вернет пустую строку `''`.

Функция dirname() модуля os.path в Python.

Функция `dirname()` модуля `os.path` возвращает имя каталога в пути `path`. Это первый элемент пары, возвращаемый путем передачи пути к функции `os.path.split()`.

Функция exists() и lexists() модуля os.path в Python.

Функция exists() модуля os.path возвращает True, если путь ссылается на существующий путь в файловой системе или дескриптор открытого файла.

Функция expanduser() модуля os.path в Python.

Функция `expanduser()` модуля `os.path` возвращает аргумент с начальным компонентом пути `'~'` или `'~user'`, замененным домашним каталогом этого пользователя.

Функция expandvars() модуля os.path в Python.

Функция `expandvars()` модуля `os.path` возвращает аргумент с расширенными переменными среды окружения. Подстроки в виде $name или $ заменяются значением значением переменной окружения `name`.

Функция getatime() модуля os.path в Python.

Функция `getatime()` модуля `os.path` возвращает время последнего доступа к файлу или каталогу, указанному в `path`.

Функция getmtime() модуля os.path в Python.

Функция `getmtime()` модуля `os.path` возвращает время последней модификации файла или каталога, указанному в `path`.

Функция getctime() модуля os.path в Python.

Функция `getctime()` модуля `os.path` возвращает системное время `ctime`, которое в некоторых системах, например Unix, является временем последнего изменения метаданных, а в Windows - временем создания файла или каталога, указанномого в `path`.

Функция getsize() модуля os.path в Python.

Функция `getsize()` модуля `os.path` возвращает размер файла в байтах, указанного в `path`.

Функция isabs() модуля os.path в Python.

Функция `isabs()` модуля `os.path` возвращает `True` если путь является абсолютным, `False` в противном случае.

Функция isfile() модуля os.path в Python.

Функция `isfile()` модуля `os.path` возвращает `True` если путь `path` существует и является обычным файлом, `False` в противном случае.

Функция isdir() модуля os.path в Python.

Функция `isdir()` модуля `os.path` возвращает `True` если путь `path` существует и является каталогом, `False` в противном случае.

Функция islink() модуля os.path в Python.

Функция `islink()` модуля `os.path` возвращает `True` если путь `path` относится к существующей записи каталога, который является символической ссылкой.

Функция ismount() модуля os.path в Python.

Функция `ismount()` модуля `os.path` возвращает `True` если путь `path` существует и является точкой монтирования, `False` в противном случае.

Функция join() модуля os.path в Python.

Функция `join()` модуля `os.path` правильно соединяет переданный путь `path` к одному или более компонентов пути `*paths`.

Функция normcase() модуля os.path в Python.

Функция `normcase()` модуля `os.path` нормализует регистр имени в пути `path`.

Функция normpath() модуля os.path в Python.

Функция `normpath()` модуля `os.path` нормализует имя пути, свернув избыточные разделители и ссылки верхнего уровня, чтобы `A//B`, `A/B/`, `A/./B` и `A/foo/../B` все стали `A/B`.

Функция realpath() модуля os.path в Python.

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

Функция relpath() модуля os.path в Python.

Функция `relpath()` модуля `os.path` возвращает относительный путь к файлу `path` либо из текущего каталога, либо из необязательного начального каталога `start`.

Функция samefile() модуля os.path в Python.

Функция `samefile()` модуля `os.path` возвращает `True`, если оба аргумента пути `path1` и `path2` ссылаются на один и тот же файл или каталог.

Функция sameopenfile() модуля os.path в Python.

Функция `sameopenfile()` модуля `os.path` возвращает `True`, если файловые дескрипторы `fp1` и `fp2` ссылаются на один и тот же файл, `False` в противном случае.

Функция samestat() модуля os.path в Python.

Функция `samestat()` модуля `os.path` возвращает `True`, если кортежи `stat1` и `stat2` ссылаются на один и тот же файл.

Функция split() модуля os.path в Python.

Функция `split()` модуля `os.path` делит путь `path` на двойной кортеж `(head, tail)`, где `tail` - это последний компонент имени пути, а `head` - это все остальное.

Функция splitdrive() модуля os.path в Python.

Функция `splitdrive()` модуля `os.path` делит путь `path` на двойной кортеж `(drive, tail)`, где `drive` является либо точкой монтирования, либо пустой строкой.

Функция splitext() модуля os.path в Python.

Функция `splitext()` модуля `os.path` делит путь `path` на двойной кортеж `(root, ext)`, так что `root + ext == path`.

Свойство supports_unicode_filenames модуля os.path в Python.

Свойство supports_unicode_filenames() модуля os.path возвращает True, если в качестве имен файлов могут использоваться произвольные строки Unicode в пределах ограничений, налагаемых файловой системой.

Функция isjunction() модуля os.path в Python.

Новое в Python 3.12. Функция os.path.isjunction() модуля os.path возвращает значение True, если путь path относится к существующей записи каталога, которая является соединением.

Функция isdevdrive() модуля os.path в Python.

Новое в Python 3.12. Функция isdevdrive() модуля os.path возвращает значение True, если путь path находится на диске разработчика Windows Dev Drive. А Dev Drive оптимизирован для сценариев разработки и обеспечивает более высокую производительность при чтении и записи файлов.

Функция splitroot() модуля os.path в Python.

Новое в Python 3.12. Функция splitroo() модуля os.path разделяет имя пути path на кортеж из трех элементов (drive, root, tail).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

https://alkogolizm.vyvod-iz-zapoya-v-stacionare-samara11.ru/