os.path – Обработка путей к файлам¶os.path – Common pathname manipulations
Этот модуль реализует несколько полезных функций для работы с путями. Для чтения и записи файлов см. open(), а для доступа к файловой системе – модуль os. Параметры пути могут быть строками или байтами. Приложениям рекомендуется представлять имена файлов в виде (Unicode) строк. К сожалению, некоторые имена файлов в Unix невозможно представить в виде строк, поэтому приложениям, которым нужна поддержка произвольных имён файлов в Unix, следует использовать байтовые объекты для представления путей. Обратно: использование байтовых объектов не позволяет представить все имена файлов в Windows (в стандартной кодировке mbcs), поэтому приложения Windows должны использовать строковые объекты для доступа ко всем файлам.
Примечание
Все эти функции принимают в качестве параметров только объекты байт или только строки. Если возвращается путь или имя файла, результатом будет объект того же типа.
Предупреждение
В Windows многие из этих функций не поддерживают UNC-пути должным образом. splitunc() и ismount() обрабатывают их корректно.
- os.path.abspath(path)¶
- Возвращает нормализованную абсолютную версию пути path. На большинстве платформ это эквивалентно normpath(join(os.getcwd(), path)).
- os.path.basename(path)¶
- Возвращает базовое имя пути path. Это вторая половина пары, возвращаемой split(path). Обратите внимание, что результат этой функции отличается от программы Unix basename; если basename для '/foo/bar/' возвращает 'bar', то функция basename() возвращает пустую строку ('').
- os.path.commonprefix(list)¶
- Возвращает самый длинный общий префикс путей (посимвольно), который является префиксом всех путей в list. Если list пуст, возвращает пустую строку (''). Обратите внимание: результат может быть некорректным путём, поскольку сравнение выполняется посимвольно.
- os.path.dirname(path)¶
- Возвращает имя каталога пути path. Это первая половина пары, возвращаемой split(path).
- os.path.exists(path)¶
- Возвращает True, если path указывает на существующий путь. Возвращает False для битых символических ссылок. На некоторых платформах эта функция может вернуть False, если нет прав на выполнение os.stat() для запрошенного файла, даже если path физически существует.
- os.path.lexists(path)¶
- Возвращает True, если path указывает на существующий путь. Возвращает True для битых символических ссылок. Эквивалентно exists() на платформах без os.lstat().
- os.path.expanduser(path)¶
В Unix и Windows возвращает аргумент, в котором начальный компонент ~ или ~user заменяется на домашний каталог этого пользователя.
В Unix начальный символ ~ заменяется на переменную окружения HOME, если она установлена; в противном случае домашний каталог текущего пользователя ищется в файле паролей с помощью встроенного модуля pwd. Начальный символ ~user ищется непосредственно в файле паролей.
В Windows используются HOME и USERPROFILE, если они установлены; в противном случае используется комбинация HOMEPATH и HOMEDRIVE. Начальный символ ~user обрабатывается путём удаления последнего компонента каталога из созданного выше пользовательского пути.
Если разворачивание не удалось или путь не начинается с тильды, путь возвращается без изменений.
- os.path.expandvars(path)¶
Возвращает аргумент с раскрытыми переменными окружения. Подстроки вида $name или ${name} заменяются на значение переменной окружения name. Некорректные имена переменных и ссылки на несуществующие переменные остаются без изменений.
В Windows, помимо $name и ${name}, поддерживается раскрытие %name%.
- os.path.getatime(path)¶
Возвращает время последнего доступа к path. Возвращаемое значение – число, выражающее количество секунд с начала эпохи (см. модуль time). Возбуждает os.error, если файл не существует или недоступен.
Если os.stat_float_times() возвращает True, результат – число с плавающей точкой .
- os.path.getmtime(path)¶
Возвращает время последнего изменения path. Возвращаемое значение – число, выражающее количество секунд с начала эпохи (см. модуль time). Возбуждает os.error, если файл не существует или недоступен.
Если os.stat_float_times() возвращает True, результат – число с плавающей точкой .
- os.path.getctime(path)¶
- Возвращает системное ctime, которое в одних системах (например, Unix) является временем последнего изменения, а в других (например, Windows) – временем создания для path. Возвращаемое значение – число, выражающее количество секунд с начала эпохи (см. модуль time). Возбуждает os.error, если файл не существует или недоступен.
- os.path.getsize(path)¶
- Возвращает размер path в байтах. Возбуждает os.error, если файл не существует или недоступен.
- os.path.isabs(path)¶
- Возвращает True, если path является абсолютным путём. В Unix это означает, что он начинается с косой черты, в Windows – что он начинается с обратной косой черты после удаления возможной буквы диска.
- os.path.isfile(path)¶
- Возвращает True, если path является существующим обычным файлом. Эта функция переходит по символическим ссылкам, поэтому и islink(), и isfile() могут быть истинными для одного и того же пути.
- os.path.isdir(path)¶
- Возвращает True, если path является существующей директорией. Эта функция переходит по символическим ссылкам, поэтому и islink(), и isdir() могут быть истинными для одного и того же пути.
- os.path.islink(path)¶
- Возвращает True, если path указывает на элемент каталога, являющийся символической ссылкой. Всегда возвращает False, если символические ссылки не поддерживаются.
- os.path.ismount(path)¶
- Возвращает True, если путь path является точкой монтирования: точкой в файловой системе, куда смонтирована другая файловая система. Функция проверяет, находится ли родительский каталог path, то есть path/.., на другом устройстве, чем path, или path/.. и path указывают на один и тот же i-node на одном устройстве – это позволяет определять точки монтирования для всех вариантов Unix и POSIX.
- os.path.join(path1[, path2[, ...]])¶
- Объединяет один или несколько компонентов пути с учётом контекста. Если какой-либо компонент является абсолютным путём, все предыдущие компоненты (в Windows – включая предыдущую букву диска, если она была) отбрасываются, и объединение продолжается. Возвращаемое значение – конкатенация path1 и, опционально, path2 и т.д., с ровно одним разделителем каталогов (os.sep) между компонентами, если только path2 не пуст. Обратите внимание, что в Windows, поскольку для каждого диска существует текущий каталог, os.path.join("c:", "foo") представляет путь, относительный текущего каталога на диске C: (c:foo), а не c:\foo.
- os.path.normcase(path)¶
- Нормализует регистр символов в пути. В Unix возвращает путь без изменений; в файловых системах без учёта регистра преобразует путь в нижний регистр. В Windows также заменяет прямые слеши на обратные.
- os.path.normpath(path)¶
- Нормализует путь. Убирает лишние разделители и ссылки на родительские каталоги, так что A//B, A/./B и A/foo/../B становятся A/B. Регистр не нормализуется (для этого используется normcase()). В Windows заменяет прямые слеши на обратные. Следует понимать, что это может изменить значение пути, если он содержит символические ссылки!
- os.path.realpath(path)¶
- Возвращает канонический путь указанного имени файла, устраняя все символические ссылки, встречающиеся в пути (если они поддерживаются операционной системой).
- os.path.relpath(path[, start])¶
Возвращает относительный путь к path либо от текущего каталога, либо от заданной точки start.
start по умолчанию равен os.curdir. Доступность: Windows, Unix.
- os.path.samefile(path1, path2)¶
- Возвращает True, если оба аргумента-пути указывают на один и тот же файл или каталог (определяется по номеру устройства и номеру i-node). Вызывает исключение, если вызов os.stat() для любого из путей завершается ошибкой. Доступность: Unix.
- os.path.sameopenfile(fp1, fp2)¶
- Возвращает True, если файловые дескрипторы fp1 и fp2 указывают на один и тот же файл. Доступность: Unix.
- os.path.samestat(stat1, stat2)¶
- Возвращает True, если кортежи статистики stat1 и stat2 относятся к одному и тому же файлу. Эти структуры могут быть возвращены fstat(), lstat() или stat(). Эта функция реализует базовое сравнение, используемое samefile() и sameopenfile(). Доступность: Unix.
- os.path.split(path)¶
- Разделяет имя пути path на пару (head, tail), где tail – последний компонент пути, а head – всё, что предшествует ему. Часть tail никогда не содержит косую черту; если path заканчивается косой чертой, tail будет пуст. Если в path нет косой черты, head будет пуст. Если path пуст, то и head, и tail пусты. Замыкающие косые черты удаляются из head, если только он не является корнем (только одна или несколько косых черт). Почти во всех случаях join(head, tail) равно path (единственное исключение – когда между head и tail было несколько косых черт).
- os.path.splitdrive(path)¶
- Разделяет имя пути path на пару (drive, tail), где drive – либо спецификация диска, либо пустая строка. В системах, не использующих спецификации дисков, drive всегда будет пустой строкой. Во всех случаях drive + tail будет совпадать с path.
- os.path.splitext(path)¶
- Разделяет путь path на пару (root, ext), такую, что root + ext == path, причём ext либо пустая, либо начинается с точки и содержит не более одной точки. Начальные точки в базовом имени игнорируются; splitext('.cshrc') возвращает ('.cshrc', '').
- os.path.splitunc(path)¶
- Разделяет имя пути path на пару (unc, rest) так, что unc – это точка монтирования UNC (например, r'\\host\mount'), если она присутствует, а rest – остальная часть пути (например, r'\path\file.ext'). Для путей, содержащих буквы дисков, unc всегда будет пустой строкой. Доступность: Windows.
- os.path.supports_unicode_filenames¶
- True, если произвольные строки Unicode могут использоваться в качестве имён файлов (с учётом ограничений, налагаемых файловой системой), и если os.listdir() возвращает строки, содержащие символы, которые невозможно представить в ASCII.