Документация Python неофициальный перевод

os.path.md

612 строк · 19.4 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.0/library/os.path.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `os.path` – Обработка путей к файлам89Этот модуль реализует несколько полезных функций для работы с путями. Для чтения и записи файлов см. [`open()`](https://python-all.ru/3.0/library/functions.html#open), а для доступа к файловой системе – модуль [`os`](https://python-all.ru/3.0/library/os.html#module-os). Параметры пути могут быть строками или байтами. Приложениям рекомендуется представлять имена файлов в виде (Unicode) строк. К сожалению, некоторые имена файлов в Unix невозможно представить в виде строк, поэтому приложениям, которым нужна поддержка произвольных имён файлов в Unix, следует использовать байтовые объекты для представления путей. Обратно: использование байтовых объектов не позволяет представить все имена файлов в Windows (в стандартной кодировке `mbcs`), поэтому приложения Windows должны использовать строковые объекты для доступа ко всем файлам.1011> **Примечание**12>13> Все эти функции принимают в качестве параметров только объекты байт или только строки. Если возвращается путь или имя файла, результатом будет объект того же типа.1415> **Предупреждение**16>17> В Windows многие из этих функций не поддерживают UNC-пути должным образом. [`splitunc()`](https://python-all.ru/3.0/library/os.path.html#os.path.splitunc) и [`ismount()`](https://python-all.ru/3.0/library/os.path.html#os.path.ismount) обрабатывают их корректно.1819#### `[os.path.abspath]os.path.abspath(path)`2021Возвращает нормализованную абсолютную версию пути2223*path*2425. На большинстве платформ это эквивалентно2627`normpath(join(os.getcwd(), path))`2829.3031#### `[os.path.basename]os.path.basename(path)`3233Возвращает базовое имя пути3435*path*3637. Это вторая половина пары, возвращаемой3839`split(path)`4041. Обратите внимание, что результат этой функции отличается от программы Unix4243**basename**4445; если4647**basename**4849для5051`'/foo/bar/'`5253возвращает5455`'bar'`5657, то функция5859[`basename()`](https://python-all.ru/3.0/library/os.path.html#os.path.basename)6061возвращает пустую строку (6263`''`6465).6667#### `[os.path.commonprefix]os.path.commonprefix(list)`6869Возвращает самый длинный общий префикс путей (посимвольно), который является префиксом всех путей в7071*list*7273. Если7475*list*7677пуст, возвращает пустую строку (7879`''`8081). Обратите внимание: результат может быть некорректным путём, поскольку сравнение выполняется посимвольно.8283#### `[os.path.dirname]os.path.dirname(path)`8485Возвращает имя каталога пути8687*path*8889. Это первая половина пары, возвращаемой9091`split(path)`9293.9495#### `[os.path.exists]os.path.exists(path)`9697Возвращает9899`True`100101, если102103*path*104105указывает на существующий путь. Возвращает106107`False`108109для битых символических ссылок. На некоторых платформах эта функция может вернуть110111`False`112113, если нет прав на выполнение114115[`os.stat()`](https://python-all.ru/3.0/library/os.html#os.stat)116117для запрошенного файла, даже если118119*path*120121физически существует.122123#### `[os.path.lexists]os.path.lexists(path)`124125Возвращает126127`True`128129, если130131*path*132133указывает на существующий путь. Возвращает134135`True`136137для битых символических ссылок. Эквивалентно138139[`exists()`](https://python-all.ru/3.0/library/os.path.html#os.path.exists)140141на платформах без142143[`os.lstat()`](https://python-all.ru/3.0/library/os.html#os.lstat)144145.146147#### `[os.path.expanduser]os.path.expanduser(path)`148149В Unix и Windows возвращает аргумент, в котором начальный компонент `~` или `~user` заменяется на домашний каталог этого *пользователя*.150151В Unix начальный символ `~` заменяется на переменную окружения **HOME**, если она установлена; в противном случае домашний каталог текущего пользователя ищется в файле паролей с помощью встроенного модуля [`pwd`](https://python-all.ru/3.0/library/pwd.html#module-pwd). Начальный символ `~user` ищется непосредственно в файле паролей.152153В Windows используются **HOME** и **USERPROFILE**, если они установлены; в противном случае используется комбинация **HOMEPATH** и **HOMEDRIVE**. Начальный символ `~user` обрабатывается путём удаления последнего компонента каталога из созданного выше пользовательского пути.154155Если разворачивание не удалось или путь не начинается с тильды, путь возвращается без изменений.156157#### `[os.path.expandvars]os.path.expandvars(path)`158159Возвращает аргумент с раскрытыми переменными окружения. Подстроки вида `$name` или `${name}` заменяются на значение переменной окружения *name*. Некорректные имена переменных и ссылки на несуществующие переменные остаются без изменений.160161В Windows, помимо `$name` и `${name}`, поддерживается раскрытие `%name%`.162163#### `[os.path.getatime]os.path.getatime(path)`164165Возвращает время последнего доступа к *path*. Возвращаемое значение – число, выражающее количество секунд с начала эпохи (см. модуль [`time`](https://python-all.ru/3.0/library/time.html#module-time)). Возбуждает [`os.error`](https://python-all.ru/3.0/library/os.html#os.error), если файл не существует или недоступен.166167Если [`os.stat_float_times()`](https://python-all.ru/3.0/library/os.html#os.stat_float_times) возвращает True, результат – число с плавающей точкой .168169#### `[os.path.getmtime]os.path.getmtime(path)`170171Возвращает время последнего изменения *path*. Возвращаемое значение – число, выражающее количество секунд с начала эпохи (см. модуль [`time`](https://python-all.ru/3.0/library/time.html#module-time)). Возбуждает [`os.error`](https://python-all.ru/3.0/library/os.html#os.error), если файл не существует или недоступен.172173Если [`os.stat_float_times()`](https://python-all.ru/3.0/library/os.html#os.stat_float_times) возвращает True, результат – число с плавающей точкой .174175#### `[os.path.getctime]os.path.getctime(path)`176177Возвращает системное ctime, которое в одних системах (например, Unix) является временем последнего изменения, а в других (например, Windows) – временем создания для178179*path*180181. Возвращаемое значение – число, выражающее количество секунд с начала эпохи (см. модуль182183[`time`](https://python-all.ru/3.0/library/time.html#module-time)184185). Возбуждает186187[`os.error`](https://python-all.ru/3.0/library/os.html#os.error)188189, если файл не существует или недоступен.190191#### `[os.path.getsize]os.path.getsize(path)`192193Возвращает размер194195*path*196197в байтах. Возбуждает198199[`os.error`](https://python-all.ru/3.0/library/os.html#os.error)200201, если файл не существует или недоступен.202203#### `[os.path.isabs]os.path.isabs(path)`204205Возвращает206207`True`208209, если210211*path*212213является абсолютным путём. В Unix это означает, что он начинается с косой черты, в Windows – что он начинается с обратной косой черты после удаления возможной буквы диска.214215#### `[os.path.isfile]os.path.isfile(path)`216217Возвращает218219`True`220221, если222223*path*224225является существующим обычным файлом. Эта функция переходит по символическим ссылкам, поэтому и226227[`islink()`](https://python-all.ru/3.0/library/os.path.html#os.path.islink)228229, и230231[`isfile()`](https://python-all.ru/3.0/library/os.path.html#os.path.isfile)232233могут быть истинными для одного и того же пути.234235#### `[os.path.isdir]os.path.isdir(path)`236237Возвращает238239`True`240241, если242243*path*244245является существующей директорией. Эта функция переходит по символическим ссылкам, поэтому и246247[`islink()`](https://python-all.ru/3.0/library/os.path.html#os.path.islink)248249, и250251[`isdir()`](https://python-all.ru/3.0/library/os.path.html#os.path.isdir)252253могут быть истинными для одного и того же пути.254255#### `[os.path.islink]os.path.islink(path)`256257Возвращает258259`True`260261, если262263*path*264265указывает на элемент каталога, являющийся символической ссылкой. Всегда возвращает266267`False`268269, если символические ссылки не поддерживаются.270271#### `[os.path.ismount]os.path.ismount(path)`272273Возвращает274275`True`276277, если путь278279*path*280281является282283*точкой монтирования*284285: точкой в файловой системе, куда смонтирована другая файловая система. Функция проверяет, находится ли родительский каталог286287*path*288289, то есть290291`path/..`292293, на другом устройстве, чем294295*path*296297, или298299`path/..`300301и302303*path*304305указывают на один и тот же i-node на одном устройстве – это позволяет определять точки монтирования для всех вариантов Unix и POSIX.306307#### `[os.path.join]os.path.join(path1[, path2[, ...]])`308309Объединяет один или несколько компонентов пути с учётом контекста. Если какой-либо компонент является абсолютным путём, все предыдущие компоненты (в Windows – включая предыдущую букву диска, если она была) отбрасываются, и объединение продолжается. Возвращаемое значение – конкатенация310311*path1*312313и, опционально,314315*path2*316317и т.д., с ровно одним разделителем каталогов (318319`os.sep`320321) между компонентами, если только322323*path2*324325не пуст. Обратите внимание, что в Windows, поскольку для каждого диска существует текущий каталог,326327`os.path.join("c:", "foo")`328329представляет путь, относительный текущего каталога на диске330331`C:`332333(334335`c:foo`336337), а не338339`c:\foo`340341.342343#### `[os.path.normcase]os.path.normcase(path)`344345Нормализует регистр символов в пути. В Unix возвращает путь без изменений; в файловых системах без учёта регистра преобразует путь в нижний регистр. В Windows также заменяет прямые слеши на обратные.346347#### `[os.path.normpath]os.path.normpath(path)`348349Нормализует путь. Убирает лишние разделители и ссылки на родительские каталоги, так что350351`A//B`352353,354355`A/./B`356357и358359`A/foo/../B`360361становятся362363`A/B`364365. Регистр не нормализуется (для этого используется366367[`normcase()`](https://python-all.ru/3.0/library/os.path.html#os.path.normcase)368369). В Windows заменяет прямые слеши на обратные. Следует понимать, что это может изменить значение пути, если он содержит символические ссылки!370371#### `[os.path.realpath]os.path.realpath(path)`372373Возвращает канонический путь указанного имени файла, устраняя все символические ссылки, встречающиеся в пути (если они поддерживаются операционной системой).374375#### `[os.path.relpath]os.path.relpath(path[, start])`376377Возвращает относительный путь к *path* либо от текущего каталога, либо от заданной точки *start*.378379*start* по умолчанию равен [`os.curdir`](https://python-all.ru/3.0/library/os.html#os.curdir). Доступность: Windows, Unix.380381#### `[os.path.samefile]os.path.samefile(path1, path2)`382383Возвращает384385`True`386387, если оба аргумента-пути указывают на один и тот же файл или каталог (определяется по номеру устройства и номеру i-node). Вызывает исключение, если вызов388389[`os.stat()`](https://python-all.ru/3.0/library/os.html#os.stat)390391для любого из путей завершается ошибкой. Доступность: Unix.392393#### `[os.path.sameopenfile]os.path.sameopenfile(fp1, fp2)`394395Возвращает396397`True`398399, если файловые дескрипторы400401*fp1*402403и404405*fp2*406407указывают на один и тот же файл. Доступность: Unix.408409#### `[os.path.samestat]os.path.samestat(stat1, stat2)`410411Возвращает412413`True`414415, если кортежи статистики416417*stat1*418419и420421*stat2*422423относятся к одному и тому же файлу. Эти структуры могут быть возвращены424425`fstat()`426427,428429`lstat()`430431или432433`stat()`434435. Эта функция реализует базовое сравнение, используемое436437[`samefile()`](https://python-all.ru/3.0/library/os.path.html#os.path.samefile)438439и440441[`sameopenfile()`](https://python-all.ru/3.0/library/os.path.html#os.path.sameopenfile)442443. Доступность: Unix.444445#### `[os.path.split]os.path.split(path)`446447Разделяет имя пути448449*path*450451на пару452453`(head, tail)`454455, где456457*tail*458459– последний компонент пути, а460461*head*462463– всё, что предшествует ему. Часть464465*tail*466467никогда не содержит косую черту; если468469*path*470471заканчивается косой чертой,472473*tail*474475будет пуст. Если в476477*path*478479нет косой черты,480481*head*482483будет пуст. Если484485*path*486487пуст, то и488489*head*490491, и492493*tail*494495пусты. Замыкающие косые черты удаляются из496497*head*498499, если только он не является корнем (только одна или несколько косых черт). Почти во всех случаях500501`join(head, tail)`502503равно504505*path*506507(единственное исключение – когда между508509*head*510511и512513*tail*514515было несколько косых черт).516517#### `[os.path.splitdrive]os.path.splitdrive(path)`518519Разделяет имя пути520521*path*522523на пару524525`(drive, tail)`526527, где528529*drive*530531– либо спецификация диска, либо пустая строка. В системах, не использующих спецификации дисков,532533*drive*534535всегда будет пустой строкой. Во всех случаях536537`drive + tail`538539будет совпадать с540541*path*542543.544545#### `[os.path.splitext]os.path.splitext(path)`546547Разделяет путь548549*path*550551на пару552553`(root, ext)`554555, такую, что556557`root + ext == path`558559, причём560561*ext*562563либо пустая, либо начинается с точки и содержит не более одной точки. Начальные точки в базовом имени игнорируются;564565`splitext('.cshrc')`566567возвращает568569`('.cshrc', '')`570571.572573#### `[os.path.splitunc]os.path.splitunc(path)`574575Разделяет имя пути576577*path*578579на пару580581`(unc, rest)`582583так, что584585*unc*586587– это точка монтирования UNC (например,588589`r'\\host\mount'`590591), если она присутствует, а592593*rest*594595– остальная часть пути (например,596597`r'\path\file.ext'`598599). Для путей, содержащих буквы дисков,600601*unc*602603всегда будет пустой строкой. Доступность: Windows.604605#### `[os.path.supports_unicode_filenames]os.path.supports_unicode_filenames`606607True, если произвольные строки Unicode могут использоваться в качестве имён файлов (с учётом ограничений, налагаемых файловой системой), и если608609[`os.listdir()`](https://python-all.ru/3.0/library/os.html#os.listdir)610611возвращает строки, содержащие символы, которые невозможно представить в ASCII.612