Библиотека platformdirs для получения стандартных локальных путей на компьютере юзера для хранения данных приложения и конфигов.
▫️кросплатформенная (Linux, macOS, Windows, Android)
▫️изоляция разных версий приложения
▫️большой список стандартных директорий
Альтернативная библиотека: appdirs
#libs
▫️кросплатформенная (Linux, macOS, Windows, Android)
▫️изоляция разных версий приложения
▫️большой список стандартных директорий
Альтернативная библиотека: appdirs
#libs
GitHub
GitHub - tox-dev/platformdirs: A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir". - tox-dev/platformdirs
👍8
Где хранить настройки мы уже выяснили. А как вы храните на хосте юзера чувствительные и секретные данные?
Занимаетесь обфускацией паролей и токенов делая защиту от дурака? Да, я тоже когда-то этим занимался😆
Правильным способом будет хранение в специальных шифрованных хранилищах, которые предпоставляет ваша ОС.
Сохранённую информацию можно получить только если залогиниться под юзером. То есть мы защищены паролем текущего юзера.
В каждой ОС своё решение, и удобно будет исопльзовать просплатформенные библиотеки. Самая популярная это keyring.
Использовать очень просто. Любой пароль или токен сессии нужно сохранить под каким-либо именем. Обычно это имя сервиса. Так же потребуется юзернейм.
С этими же данными можем получить пароль обратно.
Поддерживается основные бэкэнды из коробки и можно доставить сторонние или написать свой.
Для генерации и проверки паролей не забываем про secrets.
#libs
Занимаетесь обфускацией паролей и токенов делая защиту от дурака? Да, я тоже когда-то этим занимался😆
Правильным способом будет хранение в специальных шифрованных хранилищах, которые предпоставляет ваша ОС.
Сохранённую информацию можно получить только если залогиниться под юзером. То есть мы защищены паролем текущего юзера.
В каждой ОС своё решение, и удобно будет исопльзовать просплатформенные библиотеки. Самая популярная это keyring.
Использовать очень просто. Любой пароль или токен сессии нужно сохранить под каким-либо именем. Обычно это имя сервиса. Так же потребуется юзернейм.
С этими же данными можем получить пароль обратно.
>>> import keyring
keyring.set_password('myapp', 'username', 'pswd!')
print(keyring.get_password('myapp', 'username'))
# pswd!
Поддерживается основные бэкэнды из коробки и можно доставить сторонние или написать свой.
Для генерации и проверки паролей не забываем про secrets.
#libs
GitHub
GitHub - jaraco/keyring
Contribute to jaraco/keyring development by creating an account on GitHub.
👍5❤3
Библиотеки для рабты с коллекциями файлов (секвенциями)
▫️ Поиск коллекций в директории
▫️ Проверка целостности
▫️ Поиск пересечений
▫️ Форматирование
И другие функции
➡️ CLIQUE https://clique.readthedocs.io/en/stable/
➡️ PYSEQ https://pyseq.rsgalloway.com/
У библиотек схожий функционал но в деталях различается.
#libs
▫️ Поиск коллекций в директории
▫️ Проверка целостности
▫️ Поиск пересечений
▫️ Форматирование
И другие функции
➡️ CLIQUE https://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]">]
➡️ PYSEQ https://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
👍10❤1
PEP471 добавил в Python3.5 в модуль
▫️это генератор с соответствующими возможностями
▫️возвращает не просто строку а объект DirEntry
▫️работает в 4-10 раз быстрей чем
Раньше это была отдельная библиотека, которая позже стала частью CPython, как и ряд других новых библиотек в Python 3.
В настоящий момент метод
Обёртка, заставляющая обычную функцию работать как генератор
В тоже время
#libs
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
Python Enhancement Proposals (PEPs)
PEP 471 – os.scandir() function – a better and faster directory iterator | peps.python.org
This PEP proposes including a new directory iteration function, os.scandir(), in the standard library. This new function adds useful functionality and increases the speed of os.walk() by 2-20 times (depending on the platform and file system) by avoiding...
👍8🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
rich
Библиотека для нескучного принта!
Добавляет в ваш терминал цвет и разные способы форматирования текста.
https://github.com/willmcgugan/rich
➡️ Мой небольшой пример
#libs
Библиотека для нескучного принта!
Добавляет в ваш терминал цвет и разные способы форматирования текста.
https://github.com/willmcgugan/rich
➡️ Мой небольшой пример
#libs
👍10
Библиотека psutil предоставляет весьма широкий инструментарий для взаимодействия с процессами.
Одна из полезных функций - узнать какие файлы открыты в контексте процесса или узнать какой процесс занимает файл.
Узнаём какие файлы использует процесс
Функция вернёт имя процесса который занял файл. Если файл не занят то вернёт
Для использования требуются админские права.
#libs
Одна из полезных функций - узнать какие файлы открыты в контексте процесса или узнать какой процесс занимает файл.
Узнаём какие файлы использует процесс
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
GitHub
GitHub - giampaolo/psutil: Cross-platform lib for process and system monitoring in Python
Cross-platform lib for process and system monitoring in Python - giampaolo/psutil
❤6👍4
Библиотека APScheduler для управления заданиями в Python.
Может запускать планировщик и задания как отдельный поток (синхронный код) и как коркутины (асинхронный код), отложенные или через интервал.
Что есть в APScheduler:
▫️гибкий функционал создания задачи
▫️удобное управление созданными заданиями (pause\resume, listing, modify, reschedule)
▫️кастомизация классов библиотеки
▫️различные хранилища заданий (Memory и различные БД)
▫️интеграции в фреймворки
▫️7 вариантов планировщика
Три варианта тригеров для задач:
▫️по дате с помощью datetime
▫️через интервал с помощью datetime
▫️через интервал с помощью cron
и другие полезности
В данный момент готовится к релизу 4я версия
PS. Всегда использую вместе с FastAPI, очень рекомендую к ознакомлению.
#libs
Может запускать планировщик и задания как отдельный поток (синхронный код) и как коркутины (асинхронный код), отложенные или через интервал.
Что есть в APScheduler:
▫️гибкий функционал создания задачи
▫️удобное управление созданными заданиями (pause\resume, listing, modify, reschedule)
▫️кастомизация классов библиотеки
▫️различные хранилища заданий (Memory и различные БД)
▫️интеграции в фреймворки
▫️7 вариантов планировщика
Три варианта тригеров для задач:
▫️по дате с помощью datetime
▫️через интервал с помощью datetime
▫️через интервал с помощью cron
и другие полезности
В данный момент готовится к релизу 4я версия
PS. Всегда использую вместе с FastAPI, очень рекомендую к ознакомлению.
#libs
GitHub
GitHub - agronholm/apscheduler at 3.x
Task scheduling library for Python. Contribute to agronholm/apscheduler development by creating an account on GitHub.
🔥4👍2