Как задать путь к файлу в 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 там была задача сделать телефонную книгу, решил дополнить её так, что бы он сохранял текстовый документ в определённую папку. Может какие библиотеки есть для этого?
Вся магия, просто указываете полный путь до папки.
Всё ещё ищете ответ? Посмотрите другие вопросы с метками 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')