TGTGInsighttelegram intelligenceLIVE / telegram public index
Назад кон каналите
Python Заметки avatar

TGINSIGHT CHAT

Python Заметки

@pythonotes

Education

Интересные заметки и обучающие материалы по Python Контакт: @paulwinex ⚠️ Рекламу на канале не делаю!⚠️ Хештеги для поиска: #tricks #libs #pep #basic #regex #qt #django #2to3 #source #offtop

Претплатници2,220Тековни претплатници
Следени објави384Број на индексирани објави
Неодамнешен опфат26,840Збир на неодамнешни прегледи
Неодамнешни објави

Неодамнешни објави

Ознака: #libs · 124 објави

当前筛选 #libs清除筛选

Објавено 26 авг.

POSIX (Portable Operating System Interface) — это набор стандартов, определяющих интерфейсы для обеспечения совместимости между операционными системами. Данный стандарт поддерживается всеми UNIX-системами (GNU/Linux, macOS, FreeBSD, OpenBSD и другие). А вот в Windows либо частично, либо через подсистемы (такие как WSL). Помимо прочих условий, один из важных моментов этого стандарта - правила синтаксического анализа строк, разбиение на токены. В Python разбиением строки на токены занимается функция shlex.split(), которая имеет один важный аргумент - posix. Этот аргумент определяет, следует ли функции использовать правила синтаксического анализа соответствующие стандарту POSIX, или использовать обратно совместимый, легаси режим. ▫️posix=True В POSIX-совместимом режиме функция shlex.split() будет учитывать переменную окружения IFS (Internal Field Separator) для определения разделителей полей и будет более строго следовать стандарту POSIX. Из строки удаляются неэкранированные кавычки и обратные слеши. ▫️posix=False В легаси режиме используется более старый способ разбиения строк на токены, который будет игнорировать переменную окружения IFS и использовать whitespaces как разделители полей. Теперь смотрим некоторые примеры. import shlex # кавычки text = r'"Do"Not"Separate" \"This\"' shlex.split(text, posix=False) # ['"Do"', 'Not"Separate"', '\\"This\\"'] shlex.split(text, posix=True) # ['DoNotSeparate', '"This"'] # специсимволы text = r'A\tB\nС\fD\vE' shlex.split(text, posix=False) # ['A\\tB\\nС\\fD\\vE'] shlex.split(text, posix=True) # ['AtBnСfDvE'] # обратный слеш text = r"cmd.exe c:\games\mario.exe" shlex.split(text, posix=False) # ['cmd.exe', 'c:\\games\\mario.exe'] shlex.split(text, posix=True) # ['cmd.exe', 'c:gamesmario.exe'] Учитвая, что аргумент posix по умолчанию True, стоит помнить этот факт при обработке строк с Windows-путями! Рекомендую самостоятельно поэксперементировать с этим аргументом! #libs

1,930 views

Hashtags

Објавено 25 мар.

Библиотека APScheduler для управления заданиями в Python. Может запускать планировщик и задания как отдельный поток (синхронный код) и как коркутины (асинхронный код), отложенные или через интервал. Что есть в APScheduler: ▫️гибкий функционал создания задачи ▫️удобное управление созданными заданиями (pause\resume, listing, modify, reschedule) ▫️кастомизация классов библиотеки ▫️различные хранилища заданий (Memory и различные БД) ▫️интеграции в фреймворки ▫️7 вариантов планировщика Три варианта тригеров для задач: ▫️по дате с помощью datetime ▫️через интервал с помощью datetime ▫️через интервал с помощью cron и другие полезности В данный момент готовится к релизу 4я версия PS. Всегда использую вместе с FastAPI, очень рекомендую к ознакомлению. #libs

2,610 views

Hashtags

Објавено 4 мар.

Библиотека psutil предоставляет весьма широкий инструментарий для взаимодействия с процессами. Одна из полезных функций - узнать какие файлы открыты в контексте процесса или узнать какой процесс занимает файл. Узнаём какие файлы использует процесс import psutil def list_file_handlers(process_name): for proc in psutil.process_iter(): if proc.name().lower().startswith(process_name): for file in proc.open_files(): print(file) list_file_handlers('python') Функция вернёт имя процесса который занял файл. Если файл не занят то вернёт None. def who_is_use(fpath): for proc in psutil.process_iter(): for item in proc.open_files(): if fpath == item.path: return proc.name() Для использования требуются админские права. #libs

2,440 views

Hashtags

Објавено 19 фев.

Новый пакеджинг для Python uv написанный на Rust от автора быстрого линтера Ruff Что нам обещают ▫️ Эпичная скорость ▫️ Легкий переход с pip и pip-tools ▫️ Отсутствие зависимостей и дистрибуция в виде одного автономного bin файла Следим, надеемся, тестируем... #libs

2,180 views

Hashtags

Објавено 12 фев.

rich Библиотека для нескучного принта! Добавляет в ваш терминал цвет и разные способы форматирования текста. https://github.com/willmcgugan/rich ➡️ Мой небольшой пример #libs

2,220 views

Hashtags

Објавено 5 фев.

PEP471 добавил в Python3.5 в модуль os новую функцию scandir() ▫️это генератор с соответствующими возможностями ▫️возвращает не просто строку а объект DirEntry ▫️работает в 4-10 раз быстрей чем os.listdir и os.walk Раньше это была отдельная библиотека, которая позже стала частью CPython, как и ряд других новых библиотек в Python 3. В настоящий момент метод Path.iterdir() всё еще использует os.listdir(). Обёртка, заставляющая обычную функцию работать как генератор def iterdir(self): for name in os.listdir(self): yield self._make_child_relpath(name) В тоже время Path.glob() и Path.rglob() уже используют os.scandir(), то есть полноценные генераторы. #libs

2,540 views

Hashtags

Објавено 27 дек.

Библиотеки для рабты с коллекциями файлов (секвенциями) ▫️ Поиск коллекций в директории ▫️ Проверка целостности ▫️ Поиск пересечений ▫️ Форматирование И другие функции ➡️ CLIQUEhttps://clique.readthedocs.io/en/stable/ import clique files = [ '/tmp/file1_001.png', '/tmp/file1_002.png', '/tmp/file1_003.png', '/tmp/file1_005.png', ] collection = clique.assemble(files)[0][0] collection.head # '/tmp/file1_' collection.tail # '.png' collection.padding # 3 collection.indexes # <SortedSet "[1, 2, 3, 5]"> collection.holes() # <Collection "/tmp/file1_%03d.png [4]"> collection.separate() # [<Collection "/tmp/file1_%03d.png [1-3]">, # <Collection "/tmp/file1_%03d.png [5]">] ➡️PYSEQhttps://pyseq.rsgalloway.com/ import pyseq files = [ '/tmp/file1_001.png', '/tmp/file1_002.png', '/tmp/file1_003.png', '/tmp/file1_005.png', ] sequence = pyseq.Sequence(files) sequence.head() # 'file1_' sequence.tail() # '.png' sequence.path() # '/tmp/file1_1-5.png' sequence.frames() # [1, 2, 3, 5] sequence.format('%p') # '%03d' sequence.missing() # [4] У библиотек схожий функционал но в деталях различается. clique не умеет работать с pathlib.Path а pyseq не понимает генератор как источник. Но обе могут найти все коллекции в директории и выдать много информации о них. #libs

2,810 views

Hashtags

Објавено 11 дек.

Где хранить настройки мы уже выяснили. А как вы храните на хосте юзера чувствительные и секретные данные? Занимаетесь обфускацией паролей и токенов делая защиту от дурака? Да, я тоже когда-то этим занимался😆 Правильным способом будет хранение в специальных шифрованных хранилищах, которые предпоставляет ваша ОС. Сохранённую информацию можно получить только если залогиниться под юзером. То есть мы защищены паролем текущего юзера. В каждой ОС своё решение, и удобно будет исопльзовать просплатформенные библиотеки. Самая популярная это keyring. Использовать очень просто. Любой пароль или токен сессии нужно сохранить под каким-либо именем. Обычно это имя сервиса. Так же потребуется юзернейм. С этими же данными можем получить пароль обратно. >>> import keyring keyring.set_password('myapp', 'username', 'pswd!') print(keyring.get_password('myapp', 'username')) # pswd! Поддерживается основные бэкэнды из коробки и можно доставить сторонние или написать свой. Для генерации и проверки паролей не забываем про secrets. #libs

1,830 views

Hashtags

Објавено 4 дек.

Библиотека platformdirs для получения стандартных локальных путей на компьютере юзера для хранения данных приложения и конфигов. ▫️кросплатформенная (Linux, macOS, Windows, Android) ▫️изоляция разных версий приложения ▫️большой список стандартных директорий Альтернативная библиотека: appdirs #libs

1,990 views

Hashtags

Објавено 27 ное.

Awesome Python Typing Коллекця ссылок на различные инструменты повышения качества кода и удобства работы. Типизация, линтинг, автокомплиты и другие полезности. Есть ссылка на надавно вышедшую SQLAlchemy2, так что актуальность поддерживается. Странно что всё еще нет в списке Ruff. Хотя, в Issues уже добавили запрос. Но автор не уверен что эта тулза подходит для его списка. #libs

2,470 views

Hashtags

Објавено 13 ное.

Если вы занимаетесь веб разработкой то знаете, что для оформления UI принято использовать шрифтовые иконки. Самые популярные наборы это, конечно же, FontAwesome и MaterialDesign Было бы здорово иметь подобный функционал в PySide? Думаю, что да! И, как вы уже поняли, есть подходящая библиотека🙀 https://github.com/spyder-ide/qtawesome ▫️добавление любых иконок из популярных наборов иконок ▫️выбор цвета иконки ▫️изменение цвета для активного виджета ▫️поддержка анимации ▫️создание видежта иконки Пример создания иконки import qtawesome as qta icon = qta.icon('fa5.flag') #libs

1,910 views

Hashtags

Објавено 6 ное.

Что позволяет делать f-strings в 3.12. ▫️можно использовать одинаковые кавычки во всём выражении ▫️можно добавлять переносы для многострочного выражения ▫️можно использовать символ новой строки (эта проблема неактуальна) >>> print(f"{"\n".join( >>> ["1","2","3", >>> f"{ >>> f"{2+2}" >>> *(2+2) >>> }" >>> ] >>> )}") 1 2 3 4444 #tricks#libs

1,910 views

Hashtags

1234•••1011
ПретходнаСтраница 2 од 11Следна