Python как изменить путь к файлу

Начиная с версии Python 3.4, для задания пути к файлу рекомендуется использовать модуль pathlib с классом Path. Определить путь к рабочей директории..
путь к файлу в Python

Как задать путь к файлу в Python?

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

Самый простой вариант — не самый верный!

Внимание! У этого способа обнаружен недостаток!

Самый простой вариант задания пути выглядит как последовательность директорий, в которых находится файл, с именем самого файла, разделенные знаками слеша:

Пример относительного пути:
path = "Files/info.txt" # в Линуксе, или:
path = "Filesinfo.txt" # в Windows

Где вместо «Files» и «info.txt» Вы напишите названия ваших директорий и имя вашего файла соответственно.

Пример абсолютного пути:
path = "/home/my_comp/Files/info.txt" # для Линукс, или:
path = "C:Pythonpythonw.exeFilesinfo.txt" # для Windows

Где вместо «C:Pythonpythonw.exeFilesinfo.txt», «home/my_comp/Files/» и «info.txt» Вы напишите названия ваших директорий и имя вашего файла соответственно.

Этот вариант рабочий, однако, один существенный недостаток лишил его внимания разработчиков. Проблема заключается в том, что заданные таким способом пути адаптированы только к одному виду операционной системы: к Линукс, либо к Windows, так как в Windows используются обратные слеши «», а в Линукс — обычные «/». Из-за этого скрипт, показывавший отличные результаты в Windows, начнет жаловаться на отсутствие файлов по прописанному пути в Linux, и наоборот. А с абсолютным путем вообще все сложно: никакого диска «C:» в Линуксе нет. Скрипт опять будет ругаться! Что же делать? Правильно указать путь к файлу!

Указываем путь к файлу правильно!

Внимание! Годный вариант!

Python — умный змей, поэтому в его арсенале, начиная с 3.4 версии появился модуль pathlib, который позволяет вытворять самые приятные вещи с путями к файлу, стоит только импортировать его класс Path:

import pathlib
from pathlib import Path

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

pip install pathlib

Задаем относительный путь с помощью Path!

После того, как класс импортирован, мы получаем власть над слешами! Теперь вопрос о прямых и обратных слешах в разных операционных системах ложится на плечи Path. Используя Path, вы можете корректно задать относительный путь, который будет работать в разных системах.

Например, в случае расположения файлов, как на представленном изображении, относительный путь, определяемый в скрипте «main_script.py», сформируется автоматически из перечисленных в скобках составных частей. Pathlib инициализирует новый объект класса Path, содержимым которого станет сформированный для Вашей системы относительный путь (в Windows части пути будут разделены обратными слешами, в Linux — обычными):

import pathlib
from pathlib import Path  
path = Path("files", "info", "docs.txt") 

## выведем значение переменной path:
print(str(path))
## выведем значение переменной path:
files/info/docs.txt  

У нас появился Telegram-канал для изучающих Python! Канал совсем свежий, подпишись одним из первых, ведь вместе «питонить» веселее! 😉 Ссылка на канал: «Кодим на Python!»

Задаем абсолютный путь с помощью Path

  • cwd() — возвращает путь к рабочей директории
  • home() — возвращает путь к домашней директории

Полученную строку, содержащую путь к рабочей или домашней директории, объединим с недостающими участками пути при инициализации объекта класса Path :

Пример 1: с использованием функции cwd():
import pathlib
from pathlib import Path

#Получаем строку, содержащую путь к рабочей директории:
dir_path = pathlib.Path.cwd()

# Объединяем полученную строку с недостающими частями пути
path = Path(dir_path, 'files','info', 'docs.txt')

# выведем значение переменной path:
print(str(path))
# выведем значение переменной path:
"/home/my_comp/python/files/info/docs.txt"

В данном случае путь к директории имеет вид: dir_path = «/home/my_comp/python», а полный путь к файлу «docs.txt» будет иметь вид: «/home/my_comp/python/files/info/docs.txt».

Представленный выше код можно оптимизировать и записать в одну строку:

import pathlib
from pathlib import Path
path = Path(pathlib.Path.cwd(), 'files', 'info', 'docs.txt')

# значение переменной path:
print(str(path))
# значение переменной path:
"/home/my_comp/python/files/info/docs.txt"
Пример2: с использованием функции home():
import pathlib
from pathlib import Path

#Получаем строку, содержащую путь к домашней директории:
dir_path = pathlib.Path.home()

# Объединяем полученную строку с недостающими частями пути
path = Path(dir_path, 'files','info', 'docs.txt')

# Выведем значение переменной path:
print(str(path))
# Выведем значение переменной path:
"/home/my_comp/files/info/docs.txt"

В данном случае путь к директории имеет вид: dir_path = «/home/my_comp», а полный путь к файлу ‘docs.txt’ будет иметь вид: «/home/my_comp/files/info/docs.txt».

Сократим представленный выше код:

import pathlib
from pathlib import Path
path = Path(pathlib.Path.home(), 'files', 'info', 'docs.txt')

# Значение переменной path:
print(str(path))
# Значение переменной path:
"/home/my_comp/files/info/docs.txt"

Подведем итог: начиная с версии Python 3.4, для задания пути к файлу рекомендуется использовать модуль pathlib с классом Path. Определить путь к рабочей директории можно с помощью функции cwd(), а путь к домашней директории подскажет функция home().

Как задать путь к файлу в Python?

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

Самый простой вариант — не самый верный!

Внимание! У этого способа обнаружен недостаток!

Самый простой вариант задания пути выглядит как последовательность директорий, в которых находится файл, с именем самого файла, разделенные знаками слеша:

Пример относительного пути:

Где вместо «Files» и «info.txt» Вы напишите названия ваших директорий и имя вашего файла соответственно.

Пример абсолютного пути:

Где вместо «C:Pythonpythonw.exeFilesinfo.txt», «home/my_comp/Files/» и «info.txt» Вы напишите названия ваших директорий и имя вашего файла соответственно.

Этот вариант рабочий, однако, один существенный недостаток лишил его внимания разработчиков. Проблема заключается в том, что заданные таким способом пути адаптированы только к одному виду операционной системы: к Линукс, либо к Windows, так как в Windows используются обратные слеши «», а в Линукс — обычные «/». Из-за этого скрипт, показывавший отличные результаты в Windows, начнет жаловаться на отсутствие файлов по прописанному пути в Linux, и наоборот. А с абсолютным путем вообще все сложно: никакого диска «C:» в Линуксе нет. Скрипт опять будет ругаться! Что же делать? Правильно указать путь к файлу!

Указываем путь к файлу правильно!

Внимание! Годный вариант!

Python — умный змей, поэтому в его арсенале, начиная с 3.4 версии появился модуль pathlib, который позволяет вытворять самые приятные вещи с путями к файлу, стоит только импортировать его класс Path:

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

Задаем относительный путь с помощью Path!

После того, как класс импортирован, мы получаем власть над слешами! Теперь вопрос о прямых и обратных слешах в разных операционных системах ложится на плечи Path. Используя Path, вы можете корректно задать относительный путь, который будет работать в разных системах.

Например, в случае расположения файлов, как на представленном изображении, относительный путь, определяемый в скрипте «main_script.py», сформируется автоматически из перечисленных в скобках составных частей. Pathlib инициализирует новый объект класса Path, содержимым которого станет сформированный для Вашей системы относительный путь (в Windows части пути будут разделены обратными слешами, в Linux — обычными):

Задаем абсолютный путь с помощью Path
  • cwd() — возвращает путь к рабочей директории
  • home() — возвращает путь к домашней директории

Полученную строку, содержащую путь к рабочей или домашней директории, объединим с недостающими участками пути при инициализации объекта класса Path :

Пример 1: с использованием функции cwd():

В данном случае путь к директории имеет вид: dir_path = «/home/my_comp/python», а полный путь к файлу «docs.txt» будет иметь вид: «/home/my_comp/python/files/info/docs.txt».

Представленный выше код можно оптимизировать и записать в одну строку:

Пример2: с использованием функции home():

В данном случае путь к директории имеет вид: dir_path = «/home/my_comp», а полный путь к файлу ‘docs.txt’ будет иметь вид: «/home/my_comp/files/info/docs.txt».

Сократим представленный выше код:

А почему не os.path.join?

А что же не так с заслуженным мастером по объединению путей os.path.join() и хранителем секретной информации о расположении рабочей директории os.getcwd()? Действительно, эти замечательные функции в составе модуля os довольно долго служили разработчикам Python верой и правдой. Их вполне можно использовать для определения пути к файлу. Однако, большим недостатком функции join() является невозможность принять для объединения более двух аргументов. Таким образом, чтобы присоединить к рабочей директории путь вида: ‘files/info/docs.txt’, приходится трижды обращаться к функции join(), не забывая при этом искусно жонглировать скобками. Выглядит это примерно так:

Казалось бы, ничего сложного. Однако, зачем громоздить лишние скобки, когда есть более лаконичный вариант с использованием модуля pathlib?

Подведем итог: начиная с версии Python 3.4, для задания пути к файлу рекомендуется использовать модуль pathlib с классом Path. Определить путь к рабочей директории можно с помощью функции cwd(), а путь к домашней директории подскажет функция home().

Как сохранять текстовые файлы Python в определённую папку?

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

user avatar

Вся магия, просто указываете полный путь до папки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками python или задайте свой вопрос.

Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345

Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Путь сохранения по умолчанию для Python IDLE?

кто-нибудь знает, где и как установить путь/каталог по умолчанию для сохранения скриптов python перед запуском?

на Mac он хочет сохранить их на верхнем уровне

/Documents directory . Я хотел бы указать реальное местоположение. Есть идеи?

9 ответов

на OS X, если вы запустите IDLE.app (двойным щелчком мыши или с помощью open(1) , например), каталог по умолчанию подключается к

/Documents . Если вы хотите изменить значение по умолчанию навсегда, вам нужно отредактировать файл idlemain.py в режиме ожидания.App application bundle; в зависимости от того, какой Python(ы) вы установили, он, вероятно, будет в одном из:

С другой стороны, если вы запускаете IDLE из командной строки, например, с:

IDLE будет использовать этот текущий каталог по умолчанию.

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

Я ранее пытался открыть idlemain.py через браузер путей. Я смог открыть и отредактировать файл, но казалось, что я не смог сохранить свои изменения.

Я просто рад слышать, что у других людей есть эта проблема. Я просто думала, что веду себя глупо.

Я на самом деле только что обнаружил самый простой ответ, если вы используете ссылку ярлыка с надписью «IDLE (Python GUI)». Это в Windows Vista, поэтому я не знаю, будет ли он работать в других ОС.

1) Щелкните правой кнопкой «свойства».

2) Выберите вкладку» Ярлык».

3) В «В», укажите путь к файлу (например, «C:Users. «).

позвольте мне знать, если это работает!

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

File — > Open, чтобы открыть файл. И установите текущий рабочий каталог.

в Windows (Vista, по крайней мере, то, что я смотрю здесь), ярлыки на рабочем столе имеют поле «Пуск В», где вы можете установить каталог, используемый в качестве текущего рабочего каталога при запуске программы. Изменение этого работает для меня. Что-нибудь подобное на Mac? (Запуск в нужном каталоге из командной строки тоже работает.)

откройте новое окно finder, затем перейдите к приложениям. Найдите приложение Python. (Для моего mac это Python 3.5)

дважды щелкните по нему. Щелкните правой кнопкой мыши на значке IDLE, покажите содержимое пакета. Затем перейдите в папку contents, затем resources.

это важно:

(Примечание: Вы должны быть администратором или иметь пароль администратора для ниже)

право нажмите на кнопку idlemain.py получить информацию.

прокрутите весь путь вниз. Убедитесь, что на вкладке » общий доступ и разрешения «ваше»имя» (Me) находится на нем с привилегией «чтение и запись». Если не нажать на символ блокировки и разблокировать его. Затем добавьте / отредактируйте себя, чтобы иметь привилегию чтения и записи.

наконец,согласно инструкциям Неда Дейли, отредактируйте строку:

с желаемым путем, а затем сохраните изменения.

при перезапуске Python IDLE вы должны найти, что по умолчанию Сохранить как путь, который вы указали.

Если вы найдете каталог idlelib в вашей установке Python, у него будет несколько файлов с .расширение def. config-main.def имеет инструкции о том, куда поместить пользовательские файлы конфигурации. Однако, просматривая их, я не нашел настраиваемых путей (ваша установка может отличаться). Похоже, вам может понадобиться взломать код редактора, чтобы изменить его.

в моем случае каталог по умолчанию установлен в каталог, из которого я запустил IDLE. Например, если я запустил IDLE из каталога с именем » tmp » в моем домашнем каталоге, путь сохранения по умолчанию установлен в

/tmp . Так что начните свой простоя так:

Я использую windows 7 и, перейдя в Start — > IDLE (Python 3.6 32-бит)

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

Получение компонентов, сравнение и проверка пути файловой системы.

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

Содержание:

Примечание

: Все приведенные ниже операции поддерживаются классом pathlib.Path(), т.к. он является подклассом pathlib.PurePath().

  • Получить сегменты пути ОС в виде списка.
  • Получить букву или имя диска, если есть.
  • Получить локальный или глобальный корень, если есть.
  • Получить строку конкатенацию диска и корня, если есть.
  • Доступ к любому предку пути ОС.
  • Получить родительский путь ОС.
  • Получить имя файла (директории) в пути ОС.
  • Получить расширение файла (суффикс), если есть.
  • Получить список расширений файла, если есть.
  • Получить имя файла без расширения.
  • Получить представление пути ОС с косыми чертами '/'.
  • Представить путь ОС как file URI (file:///).
  • Проверить, является ли путь ОС абсолютным или нет.
  • Проверить зарезервированость пути под ОС Windows.
  • Объединение путей ОС, представленных как объекты.
  • Сопоставить путь ОС с предоставленным шаблоном.
  • Вычислить версию пути относительно другого пути ОС.
  • Изменить имя файла в пути ОС.
  • Изменить расширение файла в пути ОС.

PurePath.parts:

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

Обратите внимание, как диск и локальный корень перегруппированы в одну часть.

>>> import pathlib
>>> p = pathlib.PurePath('/usr/bin/python3')
>>> p.parts
# ('/', 'usr', 'bin', 'python3')

>>> p = pathlib.PurePath('c:/Program Files/PSF')
>>> p.parts
# ('c:\', 'Program Files', 'PSF')

PurePath.drive:

Свойство PurePath.drive возвращает строку, представляющую букву или имя диска, если есть:

>>> import pathlib
>>> pathlib.PurePath('c:/Program Files/').drive
# 'c:'
>>> pathlib.PurePath('/Program Files/').drive
# ''
>>> pathlib.PurePath('/etc').drive
# ''

Расширения UNC также считаются дисками:

>>> import pathlib
>>> pathlib.PurePath('//host/share/foo.txt').drive
# '\\host\share'

PurePath.root:

Свойство PurePath.root возвращает строку, представляющую локальный или глобальный корень, если есть:

>>> import pathlib
>>> pathlib.PurePath('c:/Program Files/').root
# '\'
>>> pathlib.PurePath('c:Program Files/').root
# ''
>>> pathlib.PurePath('/etc').root
# '/'

У UNC расширения тоже всегда есть корень:

>>> import pathlib
>>> pathlib.PurePath('//host/share').root
# '\'

PurePath.anchor:

Свойство PurePath.anchor возвращает строку, представляющую конкатенацию диска и корня:

>>> import pathlib
>>> pathlib.PurePath('c:/Program Files/').anchor
# 'c:\'
>>> pathlib.PurePath('c:Program Files/').anchor
# 'c:'
>>> pathlib.PurePath('/etc').anchor
# '/'
>>> pathlib.PurePath('//host/share').anchor
# '\\host\share\'

PurePath.parents:

Свойство PurePath.parents представляет собой неизменную последовательность, обеспечивающую доступ к логическим предкам пути:

Изменено в Python 3.10: PurePath.parents теперь поддерживает срезы и отрицательные значения индекса.

>>> import pathlib
>>> p = pathlib.PurePath('c:/foo/bar/setup.py')
>>> p.parents[0]
# PureWindowsPath('c:/foo/bar')
>>> p.parents[1]
# PureWindowsPath('c:/foo')
>>> p.parents[2]
# PureWindowsPath('c:/')

# Двигаемся вверх по директории
>>> for up in p.parents:
...     print(up)
... 
# c:foobar
# c:foo
# c:

PurePath.parent:

Свойство PurePath.parent возвращает строку, представляющую логический родительский путь:

>>> import pathlib
>>> p = pathlib.PurePath('/a/b/c/d')
>>> p.parent
# PurePosixPath('/a/b/c')

Свойство не позволяет пройти мимо корневой директории или пустого пути:

>>> import pathlib
>>> p = pathlib.PurePath('/')
>>> p.parent
# PurePosixPath('/')
>>> p = pathlib.PurePath('.')
>>> p.parent
# PurePosixPath('.')

Заметка. Это чисто лексическая операция, отсюда и следующее поведение:

>>> import pathlib
>>> p = pathlib.PurePath('foo/..')
>>> p.parent
# PurePosixPath('foo')

Если необходимо вычислить произвольный путь файловой системы вверх, рекомендуется сначала вызвать Path.resolve(), чтобы разрешить символические ссылки и исключить компоненты '..'.

PurePath.name:

Свойство PurePath.name возвращает строку, представляющую конечный компонент пути, исключая диск и корень, если есть. Другими словами это имя файла или название последней директории в пути.

>>> import pathlib
>>> pathlib.PurePath('my/library/setup.py').name
# 'setup.py'

Имена дисков UNC не учитываются:

>>> import pathlib
>>> pathlib.PurePath('//some/share/setup.py').name
# 'setup.py'
>>> pathlib.PurePath('//some/share').name
# ''

PurePath.suffix:

Свойство PurePath.suffix возвращает строку, представляющую расширение файла, если есть:

>>> import pathlib
>>> pathlib.PurePath('my/library/setup.py').suffix
# '.py'
>>> pathlib.PurePath('my/library.tar.gz').suffix
# '.gz'
>>> pathlib.PurePath('my/library').suffix
# ''

PurePath.suffixes:

Свойство PurePath.suffixes возвращает список, представляющий расширения файла, если есть:

>>> import pathlib
>>> pathlib.PurePath('my/library.tar.gar').suffixes
# ['.tar', '.gar']
>>> pathlib.PurePath('my/library.tar.gz').suffixes
# ['.tar', '.gz']
>>> pathlib.PurePath('my/library').suffixes
# []

PurePath.stem:

Свойство PurePath.stem возвращает строку, представляющую последний компонент пути без суффикса:

>>> import pathlib
>>> pathlib.PurePath('my/library.tar.gz').stem
# 'library.tar'
>>> pathlib.PurePath('my/library.tar').stem
# 'library'
>>> pathlib.PurePath('my/library').stem
# 'library'

PurePath.as_posix():

Метод PurePath.as_posix() возвращает строковое представление пути с косыми чертами '/':

>>> import pathlib
>>> p = pathlib.PurePath('c:\windows')
>>> str(p)
# 'c:\windows'
>>> p.as_posix()
# 'c:/windows'

PurePath.as_uri():

Метод PurePath.as_uri() возвращает строку, представляющую путь как file URI. если путь не абсолютен, то поднимается исключение ValueError.

>>> import pathlib
>>> p = PurePath('/etc/passwd')
>>> p.as_uri()
# 'file:///etc/passwd'
>>> p = PurePath('c:/Windows')
>>> p.as_uri()
# 'file:///c:/Windows'

PurePath.is_absolute():

Метод PurePath.is_absolute() проверяет, является ли путь абсолютным или нет. Возвращает True, если путь считается абсолютным. Путь считается абсолютным, если он имеет как корень так и диск, если это позволяет файловая система:

>>> import pathlib
>>> pathlib.PurePath('/a/b').is_absolute()
# True
>>> pathlib.PurePath('a/b').is_absolute()
# False

>>> pathlib.PurePath('c:/a/b').is_absolute()
# True
>>> pathlib.PurePath('/a/b').is_absolute()
# False
>>> pathlib.PurePath('c:').is_absolute()
# False
>>> pathlib.PurePath('//some/share').is_absolute()
# True

PurePath.is_reserved():PureWindowsPath

Метод PurePath.is_reserved() c pathlib.PureWindowsPath возвращает True, если путь считается зарезервированным под Windows и False противном случае. С pathlib.PurePosixPath, всегда возвращает False.

>>> import pathlib
>>> pathlib.PurePath('nul').is_reserved()
# True
>>> pathlib.PurePath('nul').is_reserved()
# False

Вызовы файловой системы на зарезервированных путях под Windows могут таинственно завершаться сбоем или иметь непредвиденные последствия.

PurePath.joinpath(*other):

Метод PurePath.joinpath() объединяет исходный путь с каждым из аргументов other по очереди:

>>> import pathlib
>>> pathlib.PurePath('/etc').joinpath('passwd')
# PurePosixPath('/etc/passwd')
>>> pathlib.PurePath('/etc').joinpath(PurePosixPath('passwd'))
# PurePosixPath('/etc/passwd')
>>> pathlib.PurePath('/etc').joinpath('init.d', 'apache2')
# PurePosixPath('/etc/init.d/apache2')
>>> pathlib.PurePath('c:').joinpath('/Program Files')
# PureWindowsPath('c:/Program Files')

PurePath.match(pattern):

Метод PurePath.match() сравнивает исходный путь с предоставленным шаблоном pattern в стиле модуля glob. Метод PurePath.match вернет True если сопоставление прошло успешно и False в противном случае.

Если шаблон pattern должен быть относительным по отношению к сравниваемому пути. Сравниваемый путь может быть как относительным так и абсолютным, а сопоставление выполняется справа:

>>> import pathlib
>>> pathlib.PurePath('a/b.py').match('*.py')
# True
>>> pathlib.PurePath('/a/b/c.py').match('b/*.py')
# True
>>> pathlib.PurePath('/a/b/c.py').match('a/*.py')
# False

Если шаблон pattern является абсолютным, то и путь должен быть абсолютным и весь путь должен совпадать:

>>> import pathlib
>>> pathlib.PurePath('/a.py').match('/*.py')
# True
>>> pathlib.PurePath('a/b.py').match('/*.py')
# False

Как и с другими методами, в Windows чувствительность к регистру не соблюдается:

>>> import pathlib
>>> pathlib.PurePath('b.py').match('*.PY')
# True

PurePath.relative_to(*other):

Метод PurePath.relative_to() вычисляет версию исходного пути относительно переданного в качестве аргумента пути other. Если это невозможно, то поднимается исключение ValueError:

>>> import pathlib
>>> p = pathlib.PurePath('/etc/passwd')
>>> p.relative_to('/')
# PurePosixPath('etc/passwd')
>>> p.relative_to('/etc')
# PurePosixPath('passwd')
>>> p.relative_to('/usr')
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
#   File "pathlib.py", line 694, in relative_to
#     .format(str(self), str(formatted)))
# ValueError: '/etc/passwd' does not start with '/usr'

PurePath.with_name(name):

Метод PurePath.with_name() возвращает новый объект пути с измененным name. Если исходный путь не имеет имени name, вызывается исключение ValueError:

>>> import pathlib
>>> p = pathlib.PurePath('c:/Downloads/pathlib.tar.gz')
>>> p.with_name('setup.py')
# PureWindowsPath('c:/Downloads/setup.py')
>>> p = pathlib.PurePath('c:/')
>>> p.with_name('setup.py')
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
#   File "/home/antoine/cpython/default/Lib/pathlib.py", line 751, in with_name
#     raise ValueError("%r has an empty name" % (self,))
# ValueError: PureWindowsPath('c:/') has an empty name

PurePath.with_suffix(suffix):

Метод PurePath.with_suffix() возвращает новый объект пути с измененным suffix. Если исходный путь не имеет расширения suffix, то к окончанию пути тупо добавляется переданный suffix .

Если суффикс suffix='' — является пустой строкой, исходный суффикс удаляется:

>>> import pathlib
>>> p = pathlib.PurePath('c:/Downloads/pathlib.tar.gz')
>>> p.with_suffix('.bz2')
# PureWindowsPath('c:/Downloads/pathlib.tar.bz2')
>>> p = pathlib.PurePath('README')
>>> p.with_suffix('.txt')
# PureWindowsPath('README.txt')
>>> p = pathlib.PurePath('README.txt')
>>> p.with_suffix('')
# PureWindowsPath('README')

Понравилась статья? Поделить с друзьями:
  • Python как изменить название столбца
  • Python как изменить кодировку строки
  • Python как изменить знак числа
  • Python как изменить shape изображения
  • Python как вызвать ошибку