TGINSIGHT SIMILAR POSTS
Најди сличен содржај
Изворен канал @pythonotes · Post #212 · 8 фев.
Как быстро отрезать от пути несколько элементов с любой стороны? Например, есть длинный путь: path = '/home/user/projects/proj1/assets/assetname/geo/publish/v001/body.geo' Для удобного отображения логов (или еще какой-то абстрактной задачи) я хочу видеть только 3 последних элемента. ▫️Сейчас мы не будем усложнять задачу с выделением только нужных элементов с парсингом самой строки. Работаем только с индексами элементов. ▫️Учитываем, что путь может прийти с неизвестно куда направленными слешами. ▫️Хочу реализацию в одну строку Вот так можно это сделать с помощью модуля os.path >>> os.path.join( ... *os.path.normpath( ... path ... ).replace( ... '\\', '/' ... ).split('/')[-3:]) 'publish/v001/body.geo' Монструозно, но работает👹 Более красивый вариант это класс pathlib.Path. У него есть две функции, которые нам помогут 🔸 Свойство parts, которое возвращает список элементов пути. 🔸 Конструктор Path() может принимать несколько строк которые объединятся в один путь. То есть аналогично функции join. >>> Path('folder', 'file') PosixPath('folder/file') Поэтому мы можем сделать так: >>> Path(*Path(path).parts[-5:]) PosixPath('publish/v001/body.geo') Ну вот, более лаконично (питонично🙄) А еще можно вырезать середину, оставив начало и конец >>> p = Path(path) >>> Path(*p.parts[:3],'...', *p.parts[-2:]) PosixPath('/home/user/.../v001/body.geo') #tricks#libs
Пронајдени 0 слични објави
Пребарај: #libs
Не се пронајдени слични објави.
Оваа објава нема претходно пресметани резултати на сличност.