os.path — Загальні маніпуляції з шляхами до файлів та каталогів
Модуль реалізує деякі корисні функції для імен шляхів. Для читання або запису файлів див. open(), а для доступу до файлової системи див. модуль os. Параметри шляху можуть передаватися у вигляді рядків або байтів. Програмам рекомендується надавати імена файлів у вигляді Юнікод рядків. На жаль, деякі імена файлів не можуть бути представлені у вигляді рядків у Unix, тому додатки, яким необхідно підтримувати довільні імена файлів у Unix, повинні використовувати байтові об'єкти для надання імен шляхів. І навпаки, використання байтових об'єктів не може представляти всі імена файлів у Windows (у стандартному кодуванні mbcs), тому програми Windows повинні використовувати рядкові об'єкти для доступу до всіх файлів.
На відміну від оболонки Unix, Python не виконує жодних автоматичних розширення шляху. Такі функції, як expanduser() і expandvars() , можуть викликатися явно, коли додатку потрібно розширення шляху, подібне до оболонки. (Див. також модуль glob .)
Модуль pathlib пропонує високорівневі шляхи об'єкти.
Всі функції приймають як параметри лише байти або лише рядкові об'єкти. Результатом буде об'єкт такого ж типу, якщо повертається шлях або ім'я файлу.
Оскільки різні операційні системи мають різні угоди про імена шляхів, у стандартній бібліотеці є кілька версій даного модуля. Модуль os.path завжди є модулем шляху, що підходить для операційної системи, в якій працює Python, і, отже, може використовуватися для локальних шляхів. Однак ви також можете імпортувати та використовувати окремі модулі, якщо хочете керувати шляхом, який завжди є в одному з різних форматів. У наступних модулів однаковий інтерфейс:
- posixpath для шляхів у стилі UNIX
- ntpath для шляхів Windows
Змінено у версії 3.8: exists() , lexists() , isdir() , isfile() , islink() та ismount() тепер повертають False замість того, щоб викликати виняток для шляхів, що містять символи або байти, непредставлені на рівні ОС.
Повертає нормалізовану абсолютизовану версію колії path. На більшості платформ еквівалентно викликати функції normpath() наступним чином: normpath(join(os.getcwd(), path)) .
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає базове ім'я колії path. Другий елемент пари, що повертається під час передачі path функції split(). Зверніть увагу, що результат цієї функції відрізняється від результату програми Unix basename; де basename для '/foo/bar/' повертає 'bar' , функція basename() повертає порожній рядок ( '' ).
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає найдовший загальний підшлях кожного шляху у послідовності paths. Викликає ValueError , якщо paths містить як абсолютні, так і відносні шляхи, paths знаходиться на різних дисках або якщо paths порожній. На відміну від commonprefix(), повертає дійсний шлях.
Додано у версії 3.5.
Змінено у версії 3.6: Приймає послідовність шляхоподібних об'єктів .
Повертає префікс найдовшого шляху (посимвольно), який є префіксом усіх шляхів у list. Якщо list порожній, повертає порожній рядок ( '').
Функція може повертати неприпустимі шляхи, тому що працює за символом за раз. Щоб отримати дійсний шлях, див. commonpath() .
>>>
os.path.commonprefix(['/usr/lib',
'/usr/local/lib'])
'/usr/l'
>>>
os.path.commonpath(['/usr/lib',
'/usr/local/lib'])
'/usr'
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає ім'я каталогу шляху path. Перший елемент пари, що повертається під час передачі path функції split().
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає True, якщо path відноситься до існуючого шляху або дескриптора відкритого файлу. Повертає False для символічних посилань, що не працюють. На деяких платформах функція може повертати False, якщо не надано дозволу на виконання os.stat() у запитаному файлі, навіть якщо path фізично існує.
Змінено у версії 3.3: path тепер може бути цілим числом: повертається True , якщо дескриптор відкритого файлу, інакше False .
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає True, якщо path відноситься до існуючого шляху. Повертає True для символічних посилань, що не працюють. Еквівалентний exists() на платформах без os.lstat() .
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
У Unix і Windows повернути аргумент, замінивши початковий компонент ~ або ~user на домашній каталог цього user.
У Unix початковий ~ замінюється змінного середовища HOME , якщо вона встановлена; в іншому випадку домашній каталог поточного користувача шукається в каталозі паролів за допомогою вбудованого модуля pwd. Початковий ~user шукається безпосередньо у каталозі паролів.
У Windows буде використовуватися USERPROFILE , якщо він встановлений, інакше використовуватиметься комбінація HOMEPATH і HOMEDRIVE . Початковий ~user обробляється шляхом видалення останнього компонента каталогу зі створеного шляху користувача, отриманого вище.
Якщо розкриття не вдається або дорога не починається з тильди, шлях повертається без змін.
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Змінено у версії 3.8: Більше не використовує HOME у Windows.
Повертає аргумент із розширеними змінними середовища. Підстроки виду $name або $ замінюються значенням змінної оточення name. Неправильні імена змінних та посилання на неіснуючі змінні залишаються без змін.
Windows підтримує розширення %name% на додаток до $name і $ .
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає час останнього доступу path. Значення, що повертається - число з плаваючою комою, що дає кількість секунд з початку епохи (див. модуль time ). Викликає OSError, якщо файл не існує або недоступний.
os.path. getmtime ( path )
Повертає час останньої модифікації path. Значення, що повертається - число з плаваючою комою, що представляє кількість секунд з початку епохи (див. модуль time ). Викликає OSError, якщо файл не існує або недоступний.
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає ctime системи, який у деяких системах (наприклад, Unix) є часом останньої зміни метаданих, а в інших (наприклад, Windows) часом створення path. Значення, що повертається - число, що вказує кількість секунд з початку епохи (див. модуль time ). Викликає OSError, якщо файл не існує або недоступний.
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає розмір path у байтах. Викликає OSError, якщо файл не існує або недоступний.
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає True, якщо path - Абсолютний шлях.У Unix це означає, що він починається з косої межі, у Windows - з косої межі (зворотної) після видалення потенційної літери диска.
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає True, якщо path є звичайним файлом existing. Слідує за символічними посиланнями, тому і islink() , і isfile() можуть бути вірними для того самого шляху.
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає True, якщо path - каталог існує. Слідує за символічними посиланнями, тому і islink() , і isdir() можуть бути вірними для одного й того ж шляху.
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає True, якщо path відноситься до запису існуючого каталогу, що є символічним посиланням. Завжди False якщо символічні посилання не підтримуються середовищем виконання Python.
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає True, якщо шлях path — точка монтування: точка у файловій системі, де було змонтовано іншу файлову систему. У POSIX функція перевіряє, чи є батьківський елемент path, path /.. , на іншому пристрої, ніж path, або ж path /.. та path вказують на той самий i-node на тому ж пристрої, - повинно визначати точки монтування для всіх варіантів Unix і POSIX. Функція не може надійно виявити монтування прив'язки в одній файловій системі. У Windows корінь з літерою диска та загальний UNC-файл завжди є точками монтування, а для будь-якого іншого шляху викликається GetVolumePathName , щоб дізнатися, чи він відрізняється від вхідного шляху.
Додано у версії 3.4: Підтримка визначення точок монтування без повноважень root у Windows.
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Розумно поєднати один або кілька компонентів шляху. Значення, що повертається, являє собою конкатенацію path та будь-яких елементів *paths з одним роздільником каталогів ( os.sep ), наступним за кожною непустою частиною, крім останньої, що означає, що результат буде закінчуватися роздільником тільки в тому випадку, якщо остання частина порожня. Якщо компонент є абсолютним шляхом, всі попередні компоненти відкидаються, і з'єднання продовжується з абсолютного компонента шляху.
У Windows буква диска не скидається при виявленні компонента абсолютного шляху (наприклад, r'\foo'). Якщо компонент містить букву диска, всі попередні компоненти відкидаються, а буква диска скидається. Зверніть увагу, що для кожного диска існує поточний каталог, os.path.join("c:", "foo") представляє шлях щодо поточного каталогу на диску C: (c:foo), а не c:\foo.
Змінено у версії 3.6: Приймає шляхоподібний об'єкт для path і paths.
Нормалізувати регістр імені дороги. У Windows перетворювати всі символи в імені шляху в нижній регістр, а також перетворити косу в зворотну косу. В інших операційних системах повертає шлях без змін.
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Нормалізувати ім'я шляху, згорнувши надлишкові роздільники та посилання верхнього рівня, щоб A//B , A/B/ , A/./B та A/foo/../B перетворилися на A/B . Маніпуляція зі рядком може змінити значення шляху, що містить символічні посилання. У Windows перетворює косу межу на зворотну косу межу. Для нормалізації регістру використовуйте normcase() .
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає канонічний шлях вказаного імені файлу, виключивши будь-які символічні посилання, що трапляються в дорозі (якщо вони підтримуються операційною системою).
Коли відбуваються цикли символьних посилань, шлях, що повертається, буде одним з елементів циклу, але не дається жодних гарантій щодо того, який з них саме буде.
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Змінено у версії 3.8: Символічні посилання та переходи дозволені у Windows.
Повертає відносний шлях до файлу path або з поточного каталогу, або з необов'язкового каталогу start. Це обчислення шляху: файлова система не має доступу, щоб підтвердити існування або характер path або start.
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає True , якщо обидва аргументи імені шляху відносяться до одного і того ж файлу або каталогу. Визначається номером пристрою та номером i-node та викликає виняток у разі збою виклику os.stat() по будь-якому імені шляху.
Змінено у версії 3.2: Додана підтримка Windows.
Змінено у версії 3.4: Windows тепер використовує ту ж реалізацію, що й усі інші платформи.
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає True, якщо файлові дескриптори fp1 і fp2 відносяться до того самого файлу.
Змінено у версії 3.2: Додана підтримка Windows.
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Повертає True, якщо кортежі статистики stat1 і stat2 відносяться до того самого файлу. Структури можуть повертатися os.fstat(), os.lstat() або os.stat(). Функція реалізує базове порівняння, яке використовується samefile() і sameopenfile() .
Змінено у версії 3.4: Додана підтримка Windows.
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Поділяє ім'я шляху path на пару, (head, tail), де tail - Останній компонент імені шляху, а head - Все, що веде до нього. Частина tail ніколи не міститиме косу межу; якщо path закінчується косою межею, tail буде порожнім. Якщо в path немає косої межі, head буде порожнім. Якщо path порожньо, те й head, і tail порожні. Завершальні косі риси видаляються з headякщо він не є кореневим (тільки одна або кілька косих рис). У всіх випадках join(head, tail) повертає шлях до того ж розташування, що і path (Але рядки можуть відрізнятися). також функції dirname() і basename() .
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Поділяє шлях path на пару (drive, tail), де drive або точка монтування, або порожній рядок. У системах, які не використовують специфікації дисків, drive завжди буде порожнім рядком. У всіх випадках drive + tail буде таким самим, як path.
У Windows розділяє ім'я шляху на диск/UNC точку обміну та відносний шлях.
Якщо шлях містить букву диска, диск міститиме все до двокрапки включно. Наприклад splitdrive("c:/dir") повертає ("c:", "/dir")
Якщо шлях містить шлях UNC, диск міститиме ім'я хоста та загальний ресурс до четвертого роздільника, але не включаючи його. наприклад splitdrive("//host/computer/dir") повертає ("//host/computer", "/dir")
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
Поділяє шлях path на пару (root, ext) так, щоб root + ext == path і ext були порожніми або починалися з точки і містили трохи більше однієї точки. Початкові точки у базовому імені ігноруються; splitext('.cshrc') повертає ('.cshrc', '') .
Змінено у версії 3.6: Приймає шляхоподібний об'єкт .
True , якщо як імена файлів можуть використовуватися довільні Юнікод рядки (у межах обмежень, що накладаються файловою системою).
🔍 Як правильно задати шлях до файлу в Python: простий посібник
Щоб правильно встановити шлях до файлу в Python, ви можете використовувати або абсолютний шлях (повний шлях від кореневого каталогу), або відносний шлях (щодо поточного каталогу виконання програми). Ось приклади використання обох варіантів:
# Абсолютний шлях path_absolute = "C:/Users/UserName/Documents/file.txt" # Відносний шлях path_relative = "folder/file.txt"
- Якщо файл знаходиться в тому ж каталозі, що й ваша програма, просто вкажіть його ім'я.
- Якщо файл знаходиться в підкаталозі, вкажіть шлях до підкаталогу та ім'я файлу.
- Якщо файл знаходиться в батьківському каталозі, використовуйте "..", щоб перейти на рівень вище.
Сподіваюся, це допоможе вам правильно встановити шлях до файлу в Python!
Детальна відповідь
Як правильно встановити шлях до файлу в Python
Python - потужна та популярна мова програмування, яка дозволяє працювати з файлами та директоріями на вашому комп'ютері. Однак, щоб успішно працювати з файлами, необхідно знати, як правильно встановити шлях до файлу в Python. У цій статті ми розглянемо кілька способів завдання шляху до файлу.
Відносний шлях
Відносний шлях - це шлях до файлу чи директорії щодо поточної робочої директорії програми. У Python можна використовувати відносний шлях, щоб вказати розташування файлу щодо розташування скрипта.
import os # Створення відносного шляху до файлу file_path = os.path.join("папка", "підпапка", "файл.txt")
У наведеному вище прикладі ми використовували функцію `os.path.join()`, яка об'єднує шляхи до файлу, що складаються з окремих частин. Це гарантує, що шлях правильно сформований незалежно від операційної системи.
Абсолютний шлях
Абсолютний шлях – це повний шлях до файлу чи директорії від кореня файлової системи. У Python можна використовувати абсолютний шлях, щоб вказати точне розташування файлу.
# Вкажіть абсолютний шлях до файлу file_path = "/повний/шлях/до/файлу.txt"
У прикладі вище ми просто вказуємо повний шлях до файлу у вигляді рядка.
Відносний шлях від поточного файлу
Іноді може виникнути потреба вказати відносний шлях до файлу щодо поточного виконуваного файлу. Прикладами можуть бути випадки, коли ви хочете посилатися на файли, що знаходяться в тій самій директорії, де знаходиться поточний скрипт.
import os # Отримання шляху до поточного файлу current_dir = os.path.dirname(os.path.abspath(__file__)) # Створення відносного шляху до файлу від поточного файлу file_path = os.path.join(current_dir, "папка", " файл.txt")
У цьому прикладі ми використовуємо функцію `os.path.abspath(__file__)`, щоб отримати шлях до поточного виконуваного файлу. Потім за допомогою функції `os.path.dirname()` ми отримуємо шлях до директорії, де знаходиться поточний файл. Потім ми використовуємо функцію `os.path.join()` для створення відносного шляху файлу від поточної директорії.
Використання змінних середовища
У Python також можна використовувати змінні середовища для завдання шляху до файлу. Змінні середовища - це змінні, що зберігають інформацію про систему та середовище виконання програми. Вони можуть бути корисними для зберігання шляхів до файлів або інших конфігураційних даних.
import os # Отримати значення змінного середовища file_path = os.environ.get("FILE_PATH")
У прикладі вище ми використовуємо функцію `os.environ.get()`, щоб отримати значення змінного середовища із заданим ім'ям. Ви повинні попередньо налаштувати це змінне середовище на вашій системі.
Висновок
Правильне завдання шляху до файлу є важливою навичкою програмування на Python. У цій статті ми розглянули кілька способів завдання шляху до файлу, включаючи використання відносного шляху, абсолютного шляху, відносного шляху від поточного файлу та використання змінного середовища. Кожен із цих способів може бути корисним залежно від конкретного завдання. Переконайтеся, що ви вибираєте підходящий спосіб у кожній ситуації і продовжуйте практикуватися, щоб стати досвідченішим у роботі з файлами в Python.