TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

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

Hashtags

Резултати

Пронајдени 1 слични објави

Глобално пребарување

sudo recast

@sudo_recast · Post #918 · 17.04.2025 г., 09:47

A useful command when you encounter conflicts while cherry-picking: tig HEAD $(git rev-parse CHERRY_PICK_HEAD 2>/dev/null) -- $(git diff --name-only --diff-filter=U | head -1) #tricks@sudo_recast

Hashtags